Oracle wrap函数使用(官方原版)

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的不同方式。 每种语法由不同的定义方法。

详见: CREATE_WRAPPED Procedures

语法

基本用例:

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;

参数列表

WRAP 函数参数

参数     

描述

 

ddl

CREATE OR REPLACE statement that specifies creation of a PL/SQL package specification, package body, function, procedure, type specification or type body

lb

Lower bound for indices in the string table that specify the CREATE ORREPLACE statement

ub

Upper bound for indices in the string table that specify the CREATE ORREPLACE statement.

 

返回值

带有加密内容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;

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值