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 » SQL Anywhere サーバ SQL の使用法 » ストアドプロシージャ、トリガ、バッチ、ユーザ定義関数

 

プロシージャ、ファンクション、トリガ、イベント、またはビューの内容を隠す

プロシージャ、ファンクション、トリガ、およびビュー内に含まれるロジックを公開しないで、アプリケーションとデータベースを配布する場合は、ALTER PROCEDURE、ALTER FUNCTION、ALTER TRIGGER、ALTER EVENT、ALTER VIEW 文の SET HIDDEN 句を使用して、これらのオブジェクトの内容を隠すことができます。

前提条件

オブジェクトの所有者であるか、ALTER ANY OBJECT システム権限を持っているか、次の権限の 1 つを持っていることが必要です。

  • プロシージャとファンクション   ALTER ANY PROCEDURE システム権限

  • ビュー   ALTER ANY VIEW システム権限

  • イベント   MANAGE ANY EVENT システム権限

  • トリガ  

    • ALTER ANY TRIGGER システム権限
    • 基礎となるテーブルに対する ALTER 権限と CREATE ANY OBJECT システム権限
    • ビューに対するトリガについては、ALTER ANY TRIGGER と ALTER ANY VIEW のシステム権限を持っていることが必要です。

内容と備考

SET HIDDEN 句は、関連オブジェクトを使用可能な状態に保ちながら、その内容を難読化して読み取れないようにします。また、アンロードして、別のデータベースに再ロードすることもできます。

修正を元に戻すことはできません。修正すると、オブジェクトの元のテキストが削除されます。オブジェクトの元のソースをデータベースの外部に保存しておく必要があります。

デバッガによるデバッグでは、プロシージャ定義が表示されず、プロシージャプロファイリングにもソースが表示されません。

注意

preserve_source_format データベースオプションを On に設定すると、データベースサーバは、プロシージャ、ビュー、トリガ、イベントの CREATE 文と ALTER 文によってフォーマットされたソースを保存し、それを適切なシステムビューのソースカラムに配置します。この場合、オブジェクト定義とソース定義の両方が隠されます。

ただし、preserve_source_format データベースオプションを On に設定しても、SET HIDDEN 句でオブジェクトの元のソース定義を削除できます。

 ♦ タスク
  • SET HIDDEN 句を持つ適切な ALTER 文を使用します。

    オプション アクション
    個別のオブジェクトを隠す

    1 つのプロシージャ、ファンクション、トリガ、イベント、またはビューを隠すには、SET HIDDEN 句を持つ適切な ALTER 文を実行します。

    特定のタイプのすべてのオブジェクトを隠す

    すべてのプロシージャ、ファンクション、トリガ、イベント、またはビューを隠すには、SET HIDDEN 句を持つ適切な ALTER 文をループで実行します。

結果

オートコミットが実行されます。オブジェクト定義は表示されません。ただし、オブジェクトは直接参照でき、クエリ処理中に使用できることは変わりません。

すべてのプロシージャを隠すには、次のループを実行します。



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;

 参照