WRAP Functions
官方原文解释:
This function takes as input a single CREATE
OR
REPLACE
statement that specifies creation of a PL/SQL package specification, package body, function, procedure, type specification or type body and returns a CREATE
OR
REPLACE
statement where the text of the PL/SQL unit has been obfuscated.
The function has 3 overloads to allow for the different ways in which DDL statements can be generated dynamically and presented to DBMS_SQL
or EXECUTE
IMMEDIATE
. The different functionality of each form of syntax is presented with the definition.
中文翻译(个人优化网络翻译):
此函数将单个CREATE OR REPLACE语句作为输入,该语句定义了创建PL / SQL包规范,包主体,函数,存储过程,类型规范或类型主体,并返回CREATE OR REPLACE语句,其中PL / SQL单元的文本被加密。
该函数有3个覆写的方法,以允许动态生成DDL语句并呈现给DBMS_SQL或EXECUTE IMMEDIATE的不同方式。 每种语法由不同的定义方法。
语法
基本用例:
DBMS_DDL.WRAP(
ddl VARCHAR2)
RETURN VARCHAR2;
提供与第一种形式相同的功能,但允许更大的输入。 此函数旨在与DBMS_SQL包中的PARSE过程一起使用,其参数列表遵循DBMS_SQL.PARSE的约定。:
DBMS_DDL.WRAP(
ddl DBMS_SQL.VARCHAR2S,
lb PLS_INTEGER,
ub PLS_INTEGER)
RETURN DBMS_SQL.VARCHAR2S;
提供与第二种语法相同的功能,并兼容DBMS_SQL package中多种形式的PARSE过程:
DBMS_DDL.WRAP(
ddl DBMS_SQL.VARCHAR2A,
lb PLS_INTEGER,
ub PLS_INTEGER)
RETURN DBMS_SQL.VARCHAR2A;
参数列表
参数 | 描述
|
---|---|
| A |
| Lower bound for indices in the string table that specify the |
| Upper bound for indices in the string table that specify the |
返回值
带有加密内容CREATE OR REPLACE语句。 对于第二种和第三种形式,返回值是一个字符串表,需要拼接字符串才能构造包含加密源文本的CREATE OR REPLACE返回字符串。
使用说明
- 尝试调用这些接口的任何PL / SQL代码都应使用完全限定的包名称SYS.DBMS_DDL,以避免由本地定义的名称DBMS_DDL或重新定义DBMS_DDL重复。
- 每次调用只接受一个PL / SQL语句块。 相比之下,PL / SQL包能够处理完整的SQL文件并对文件中的PL / SQL语句块进行加密处理,使所有其他文本保持原样。 这些接口旨在与PL / SQL的动态SQL接口(EXECUTE IMMEDIATE和DBMS_SQL.PARSE)结合使用或补充。 由于这些动态SQL接口一次只接受一个单元(并且不理解SQL * Plus“/”终止字符),因此CREATE_WRAPPED过程和WRAP函数都需要输入单个单元。
异常
ORA-24230
: If the input is not a CREATE
OR
REPLACE
statement specifying a PL/SQL unit, exception DBMS_DDL
.MALFORMED_WRAP_INPUT
is raised.
DECLARE
ddl VARCHAR2(32767);
BEGIN
ddl := GENERATE_PACKAGE(...);
EXECUTE IMMEDIATE SYS.DBMS_DDL.WRAP(ddl); -- Instead of EXECUTE IMMEDIATE ddl
END;