WRAP 関数 - DDL ステートメントの難読化
WRAP 関数は、判読可能な DDL ステートメントを、難読化された DDL ステートメントに変換します。
構文
難読化 DDL ステートメントでは、プロシージャー・ロジックに含まれる知的財産を簡単には抽出できないように、ロジックと組み込み SQL ステートメントがごちゃまぜにされます。 DDL ステートメントが外部ルーチン定義に相当する場合は、パラメーター・リストの後に続く部分がエンコードされます。
パラメーター
- object-definition-string
- DDL ステートメント・テキストを含んだ CLOB(2M) タイプのストリング。以下のいずれかの DDL ステートメント・テキストが可能です (SQLSTATE 5UA0O)。
- CREATE PROCEDURE
- CREATE FUNCTION
- CREATE PACKAGE (PL/SQL)
- CREATE PACKAGE BODY (PL/SQL)
- CREATE TRIGGER
- CREATE VIEW
- ALTER MODULE ADD FUNCTION
- ALTER MODULE PUBLISH FUNCTION
- ALTER MODULE ADD PROCEDURE
- ALTER MODULE PUBLISH PROCEDURE
注: ステートメントのエンコードは、内容を難読化することを意図したものであり、強い暗号化の 1 形式と考えるべきではありません。
許可
DBMS_DDL モジュールに対する EXECUTE 特権。
例
- 週 40 時間労働として時間給から年間給与を計算する関数の難読化バージョンを作成します。
VALUES(DBMS_DDL.WRAP('CREATE FUNCTION ' || 'salary(wage DECFLOAT) ' || 'RETURNS DECFLOAT ' || 'RETURN wage * 40 * 52')) このステートメントの結果は、例えば次の形式のものになります。 CREATE FUNCTION salary(wage DECFLOAT) WRAPPED SQL09072 obfuscated-text - 複雑なデフォルトを設定するトリガーの難読化形式を作成します。
VALUES(DBMS_DDL.WRAP('CREATE OR REPLACE TRIGGER ' || 'trg1 BEFORE INSERT ON emp ' || 'REFERENCING NEW AS n ' || 'FOR EACH ROW ' || 'WHEN (n.bonus IS NULL) ' || 'SET n.bonus = n.salary * .04')) このステートメントの結果は、例えば次の形式のものになります。 CREATE OR REPLACE TRIGGER trg1 WRAPPED SQL09072 obfuscated-text
