模糊化
模糊化对诸如例程、触发器、视图和 PL/SQL 程序包等数据库对象的 DDL 语句主体进行编码。使代码模糊化有助于保护您的知识产权,这是因为其他用户无法阅读此代码,但是 数据服务器仍然可以理解此代码。
DBMS_DDL 模块提供了两个例程,用于使例程、触发器、视图或 PL/SQL 程序包模糊化:
- WRAP 函数
- 将例程、触发器、PL/SQL 程序包或者 PL/SQL 程序包主体定义作为自变量,然后生成一个字符串,其中包含初始头,后面跟着该语句的其余部分的模糊化版本。例如,输入为如下所示:
使用 DBMS_DDL.WRAP 函数可能会导致:CREATE PROCEDURE P(a INT) BEGIN INSERT INTO T1 VALUES (a); END
DDL 语句的模糊化部分包含代码页不变量字符,确保它对于任何代码页都有效。CREATE PROCEDURE P(a INT) WRAPPED SQL09072 aBcDefg12AbcasHGJG6JKHhgkjFGHHkkkljljk878979HJHui99 - 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