プロシージャ、ファンクション、トリガ、およびビュー内に含まれるロジックを公開しないで、アプリケーションとデータベースを配布する場合は、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 システム権限
トリガ
内容と備考
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; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |