金仓数据库KingbaseES—DBMS_DDL插件介绍

1. DBMS_DDL插件简介

DBMS_DDL是KingbaseES的一个扩展插件,主要用于创建一个PL/SQL包体、函数、过程。

DBMS_DDL拓展插件不支持PG模式。

2. 加密函数WRAP

2.1. 概述

DBMS_DDL包里的加密函数WRAP,以CREATE [ OR REPLACE]语句作为输入,对SQL语句进行加密操作。

2.2. DBMS_DDL.WRAP

2.2.1. 功能描述

只加密不执行语句。

函数WRAP以CREATE [ OR REPLACE ]语句作为输入,指定创建PL/SQL包体、函数、过程。并返回CREATE [ OR REPLACE ]后面语句的加密语句。

2.2.2. 语法格式

语法格式:

DBMS_DDL.WRAP(ddl VARCHAR2)RETURN VARCHAR2;

参数说明:

ddl:指定用于创建一个PL/SQL包体、函数、过程的CREATE [ OR REPLACE ]语句。

返回值:

返回32k字节以内已加密的字符串。

注意事项:

  1. 任何试图调用这些PL/SQL代码的语句都应使用标准的包名SYS.DBMS_DDL以避免与本地定义的DBMS_DDL同义。

  2. 不能对trigger进行加密,如果需要对trigger进行加密请直接加密函数,然后通过触发器去调用该函数即可。

  3. 支持$$...$$的pg语法加密。可以加密使用$$..$$的pg语法的plsql对象或plpgsql对象。

异常:

如果不是CREATE [ OR REPLACE ]指定的PL/SQL语句,则报错:“向DBMS_DDL.WRAP 输入的内容不是合法的 PL/SQL 单元”。

2.3. DBMS_DDL.CREATE_WRAPPED

2.3.1. 功能描述

加密并执行语句。

过程CREATE_WRAPPED的功能是创建一个PL/SQL包体、函数、过程。它的实现流程是将输入参数的CREATE [ OR REPLACE ]语句转换为加密后的CREATE [ OR REPLACE ]语句,并执行转换后语句。实际上,该过程将封装PL/SQL文本与创建PL/SQL语句合为一体。

2.3.2. 语法格式

DBMS_DDL.CREATE_WRAPPED(ddl VARCHAR2);

参数说明:

ddl:指定用于创建一个PL/SQL包体、函数、过程的CREATE [ OR REPLACE ]语句。

注意事项:

  1. 任何试图调用这些PL/SQL代码都应使用标准的包名SYS.DBMS_DDL以避免与本地定义的DBMS_DDL同义。

  2. CREATE_WRAPPED过程与WRAP函数一次只能输入单条PL/SQL或PL/pgSQL语句。

  3. 不能对trigger进行加密,如果需要对trigger进行加密请先加密函数,然后通过触发器去调用该函数。

  4. 支持$$...$$的pg语法加密。可以加密使用$$..$$的pg语法的plsql对象或plpgsql对象。

异常:

如果不是CREATE [ OR REPLACE ]指定的PL/SQL语句,则报错:“向DBMS_DDL.WRAP 输入的内容不是合法的 PL/SQL 单元”。并报出异常‘DBMS_DDL.MALFORMED_WRAP_INPUT’。

2.4. 示例

exec dbms_ddl.create_wrapped(
     'create or replace function func4 return int is
     begin
         NULL;
         return 3;
     end;');

     select dbms_ddl.wrap(
     'create or replace function func4 return int is
     begin
         NULL;
         return 3;
     end;');
                              wrap
--------------------------------------------------------------
 create or replace function func4 return int is WRAPPED      +
 590+pcWmbfjjFfKLnAxofbim0uq4teexAzkLpn7wcNqAlKlAYyrlj8HgjiK1+
 2hZVKQ+iebVYIOC3/+hwN5sf9A==                                +
 END;
(1 row)

      exec dbms_ddl.create_wrapped(
      'CREATE OR replace function func_test() returns int AS $$
      BEGIN
          return 1;
      END $$language plpgsql;');

      select dbms_ddl.wrap(
      'CREATE OR replace function func_test() returns int AS $$
      BEGIN
          return 1;
      END $$language plpgsql;');
                                 wrap
  ------------------------------------------------------------------
  CREATE OR replace function func_test() returns int AS $$ WRAPPED+
  0YtnOX/Sg9VBhTNPXjO6/i6a2NCnaS+3HFqfoc8Pf1k=                    +
  END;                                                            +
  $$language plpgsql;
 (1 row)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值