模糊化

模糊化对诸如例程、触发器、视图和 PL/SQL 程序包等数据库对象的 DDL 语句主体进行编码。使代码模糊化有助于保护您的知识产权,这是因为其他用户无法阅读此代码,但是 数据服务器仍然可以理解此代码。

DBMS_DDL 模块提供了两个例程,用于使例程、触发器、视图或 PL/SQL 程序包模糊化:
WRAP 函数
将例程、触发器、PL/SQL 程序包或者 PL/SQL 程序包主体定义作为自变量,然后生成一个字符串,其中包含初始头,后面跟着该语句的其余部分的模糊化版本。例如,输入为如下所示:
CREATE PROCEDURE P(a INT)
BEGIN      
  INSERT INTO T1 VALUES (a);
END   
使用 DBMS_DDL.WRAP 函数可能会导致:

CREATE PROCEDURE P(a INT) WRAPPED SQL09072
aBcDefg12AbcasHGJG6JKHhgkjFGHHkkkljljk878979HJHui99
DDL 语句的模糊化部分包含代码页不变量字符,确保它对于任何代码页都有效。
CREATE_WRAPPED 过程
与上面所描述的 WRAP 函数采用相同的输入,但它不会返回模糊化的文本,而是在数据库中创建一个对象。在内部不会使该对象模糊化,以便编译器可以处理该对象;但是,在诸如 SYSCAT.ROUTINES 或 SYSCAT.TRIGGERS 等目录视图中,会使 TEXT 列的内容模糊化。

可以在 CLP 脚本中使用已模糊化的语句,并且可以使用客户机接口将已模糊化的语句作为动态 SQL 语句来提交。

模糊化可用于下列语句:
  • db2look(通过使用 -wrap 选项)
  • CREATE FUNCTION
  • CREATE PACKAGE
  • CREATE PACKAGE BODY
  • CREATE PROCEDURE
  • CREATE TRIGGER
  • CREATE VIEW
  • ALTER MODULE
使用 -wrap 选项时,db2look 工具会模糊化所有上述语句。