CREATE_WRAPPED 过程 - 部署模糊化对象
CREATE_WRAPPED 过程会将纯文本 DDL 对象定义变换为模糊化 DDL 对象定义,然后在数据库中部署对象。
语法
在模糊化 DDL 语句中,过程逻辑和嵌入式 SQL 语句按如下方式进行编码:无法轻松抽取逻辑中的知识产权。
参数
- object-definition-string
- 包含 DDL 语句文本的 CLOB(2M) 类型的字符串,可以为下列一项内容 (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
注: 语句的编码意味着模糊化内容,并且不应被视为强加密形式。
权限
对 DBMS_DDL 模块的 EXECUTE 特权。
示例
- 创建一个模糊化函数,用以根据每小时工资来计算年薪(规定每周 40 小时)
CALL DBMS_DDL.CREATE_WRAPPED('CREATE FUNCTION ' || 'salary(wage DECFLOAT) ' || 'RETURNS DECFLOAT ' || 'RETURN wage * 40 * 52'); SELECT text FROM SYSCAT.ROUTINES WHERE routinename = 'SALARY' AND routineschema = CURRENT SCHEMA;在成功执行 CALL 语句后,与例程“SALARY&”相对应的行的 SYSCAT.ROUTINES.TEXT 列将类似于以下格式:
CREATE FUNCTION salary(wage DECFLOAT) WRAPPED SQL09072 obfuscated-text - 创建一个用于设置复杂缺省值的模糊化触发器
CALL DBMS_DDL.CREATE_WRAPPED('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'); SELECT text FROM SYSCAT.TRIGGERS WHERE trigname = 'TRG1' AND trigschema = CURRENT SCHEMA;在成功执行 CALL 语句后,与触发器“TRG1”相对应的行的 SYSCAT.TRIGGERS.TEXT 列将类似于以下格式:
CREATE OR REPLACE TRIGGER trg1 WRAPPED SQL09072 obfuscated-text
