VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

DBMS_DDL

功能说明

DBMS_DDL提供对存储过程中某些SQL数据定义语言(DDL)语句的访问。

子程序 描述
WRAP 函数将单个CREATE OR REPLACE语句作为输入(此语句指定创建PL/pgSQL包规范、包体、函数、过程、类型规范或类型主体,并返回一个CREATE OR REPLACE语句),并在PL/pgSQL单元的文本已被混淆的情况下返回一条CREATE OR REPLACE语句。

注意事项

该功能仅在数据库兼容模式为Oracle时支持(即数据库实例初始化时指定DBCOMPATIBILITY='A')。

子程序

WRAP

语法格式

  • 提供基本功能:

    DBMS_DDL.WRAP(
    ddl      VARCHAR2) 
    RETURN VARCHAR2;
    
  • 提供基本功能以外,允许更大的输入,且是为了与DBMS_SQL包中多种形式的PARSE函数兼容而提供的:

    DBMS_DDL.WRAP(
    ddl      DBMS_SQL.VARCHAR2A, 
    lb       PLS_INTEGER, 
    ub       PLS_INTEGER) 
    RETURN DBMS_SQL.VARCHAR2A;
    

参数说明

  • ddl

    CREATE OR REPLACE的语句,此语句指定了PL/pgSQL包规范、包体、函数、过程、类型规范或类型主体。

  • 1b

    字符串表中指定CREATE OR REPLACE语句的索引的下限。

  • ub

    字符串表中指定CREATE OR REPLACE语句的索引的上限。

示例

示例1: WRAP函数加密对象为自定义函数。

1、设置serveroutput 为on(允许将dbms_output.put_line的输出信息输出至vsql的命令界面的屏幕上)。

SET SERVEROUTPUT ON;

2、声明匿名块调用DBMS_DDL.WRAP函数,为自定义函数加密。

DECLARE
l_source DBMS_SQL.VARCHAR2A;
l_wrap DBMS_SQL.VARCHAR2A;
BEGIN
l_source(1) := 'CREATE OR REPLACE FUNCTION get_date_string RETURN VARCHAR2 AS ';
l_source(2) := 'BEGIN ';
l_source(3) := 'RETURN TO_CHAR(SYSDATE, ''DD-MON-YYYY''); ';
l_source(4) := 'END get_date_string;';

l_wrap := DBMS_DDL.WRAP(ddl => l_source,
lb => 1,
ub => l_source.count);
FOR i IN 1 .. l_wrap.count LOOP
DBMS_OUTPUT.put_line(l_wrap(i));
END LOOP;
END;
/

返回结果为如下,返回加密后的结果:

CREATE OR REPLACE FUNCTION get_date_string wrapped
101 90
wxVmMHBeM21zMGtyQ35oOWMfHUETIF4N71IAHU8HDF4x700S704EFkUN5AwvI1te5Av23iQSJF8D
DFAE+ywmE0AsGFsN+FUYJFUm9EcfEFoD71D/H35oOWM6
ANONYMOUS BLOCK EXECUTE

示例2: WRAP函数加密对象为CREATE TYPE BODY。

1、设置serveroutput 为on(允许将dbms_output.put_line的输出信息输出至vsql的命令界面的屏幕上)。

SET SERVEROUTPUT ON;

2、声明匿名块调用DBMS_DDL.WRAP函数,为自定义函数加密。

DECLARE
l_source VARCHAR2(32767);
l_wrap VARCHAR2(32767);
BEGIN
l_source := 'CREATE TYPE BODY data_typ1 IS' ||
'MEMBER FUNCTION prod (invent NUMBER) RETURN NUMBER IS ' ||
'BEGIN ' ||
'END; '||
'END; ' ||
'/';

l_wrap := DBMS_DDL.WRAP(ddl => l_source);
DBMS_OUTPUT.put_line(l_wrap);
END;
/

返回结果为如下:

CREATE TYPE BODY data_typ1 wrapped
83 81
hHPI+dvF99wdBJiE4brx3bTm3bmE3rzy27vt57WEBNoT+IeMAdYa/dYYtLX5tWgnwYf23bv56rWz
lFeqtKD3tKnp36DytKzy2JKE3bXo04fT
ANONYMOUS BLOCK EXECUTE

相关链接

DBMS_SQL