Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren, Trigger, Batches und benutzerdefinierte Funktionen

 

Verbergen des Inhalts von Prozeduren, Funktionen, Triggern, Ereignissen oder Ansichten

Um eine Anwendung und eine Datenbank zu verteilen ohne die in Prozeduren, Triggern, Ereignissen und Ansichten enthaltene Logik weiterzugeben, können Sie den Inhalt dieser Objekte mit der SET HIDDEN-Klausel der Anweisungen ALTER PROCEDURE, ALTER FUNCTION, ALTER TRIGGER und ALTER VIEW verbergen.

Voraussetzungen

Sie müssen Eigentümer des Objekts sein, das ALTER ANY OBJECT-Systemprivileg haben oder eines der folgenden Privilegien haben:

  • Prozeduren und Funktionen   ALTER ANY PROCEDURE-Systemprivileg

  • Ansichten   ALTER ANY VIEW-Systemprivileg

  • Ereignisse   MANAGE ANY EVENT-Systemprivileg

  • Trigger  

    • ALTER ANY TRIGGER-Systemprivileg
    • ALTER-Privileg für die Basistabelle und das CREATE ANY OBJECT-Systemprivileg
    • Bei Triggern für Ansichten benötigen Sie die Systemprivilegien ALTER ANY TRIGGER und ALTER ANY VIEW

Kontext und Bemerkungen

Die SET HIDDEN-Klausel verschleiert den Inhalt der zugeordneten Objekte und macht sie unlesbar, wobei die Nutzbarkeit der Objekte nach wie vor möglich ist. Des weiteren können Sie die Objekte in eine andere Datenbank entladen und neu laden.

Die Änderung kann nicht rückgängig gemacht werden und löscht den Originaltext des Objekts. Deshalb ist eine Sicherung des Originaltextes dieses Objekts außerhalb der Datenbank notwendig.

Beim Debugging mithilfe des Debuggers wird weder die Definition der Prozedur angezeigt noch zeigen die Prozedurprofilinformationen den Quelltext an.

Hinweis

Wenn die preserve_source_format-Datenbankoption auf "On" gesetzt wurde, speichert der Datenbankserver die formatierte Quelle aus CREATE- und ALTER-Anweisungen für Prozeduren, Ansichten, Trigger und Ereignisse und platziert sie in der source-Spalte der entsprechenden Systemansicht. In diesem Fall wird sowohl die Objektdefinition als auch die Quellendefinition ausgeblendet.

Die Einstellung "On" für die preserve_source_format-Datenbankoption verhindert jedoch nicht, dass die ursprüngliche Quellendefinition des Objekts durch die SET HIDDEN-Klausel gelöscht wird.

 Aufgabe
  • Verwenden Sie die geeignete ALTER-Anweisung mit der SET HIDDEN-Klausel.

    Option Aktion
    Ausblenden eines einzelnen Objekts

    Führen Sie die geeignete ALTER-Anweisung mit der SET HIDDEN-Klausel aus, um eine Prozedur, einen Trigger, ein Ereignis oder eine Ansicht zu verbergen.

    Ausblenden aller Objekte eines bestimmten Typs

    Führen Sie die geeignete ALTER-Anweisung mit der SET HIDDEN-Klausel in einer Schleife aus, um alle Prozeduren, Trigger, Ereignisse oder Ansichten zu verbergen.

Ergebnisse

Ein automatisches Festschreiben wird ausgeführt. Die Objekt Definition ist nicht mehr sichtbar. Das Objekt kann jedoch immer noch direkt referenziert werden und steht für die Verwendung während der Abfrageverarbeitung zur Verfügung.

Beispiel

Führen Sie die folgenden Schleife aus, um alle Prozeduren zu verbergen:



BEGIN
    FOR hide_lp as hide_cr cursor FOR
        SELECT proc_name, user_name
        FROM SYS.SYSPROCEDURE p, SYS.SYSUSER u
        WHERE p.creator = u.user_id
        AND p.creator NOT IN (0,1,3)
    DO
        MESSAGE 'altering ' || proc_name;
        EXECUTE IMMEDIATE 'ALTER PROCEDURE "' ||
            user_name || '"."' || proc_name
            || '" SET HIDDEN'
    END FOR
END;

 Siehe auch