暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓数据库 KingbaseES 插件参考手册 (15. dbms_ddl)

数据猿 2022-08-24
390

15. dbms_ddl

15.1. 插件dbms_ddl简介

插件dbms_ddl是KingbaseES 的一个扩展插件。插件dbms_ddl功能是提供dbms_ddl系统包。 使用DBMS_DDL包可以在存储过程、函数、触发器等PL/SQL命名块和匿名块中执行DDL语句,以及执行一些DDL语句的加密操作。

  • 插件名为 dbms_ddl

  • 插件版本 V1.0

15.2. 插件dbms_ddl加载方式

该插件为初始化数据库实例时默认创建。

15.3. 插件dbms_ddl的参数配置

dbms_ddl扩展插件无需配置任何参数。

15.4. 插件dbms_ddl使用方法

15.4.1. DBMS_DDL.WRAP

功能描述

只加密不执行语句。

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

语法格式

DBMS_DDL.WRAP(ddl VARCHAR2)RETURN VARCHAR2;

参数说明

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

返回值

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

注意事项

  • 任何试图调用该子程序的语句都应使用标准的包名SYS.DBMS_DDL以避免与本地定义的DBMS_DDL同义。

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

  • 支持

    ......

    的pg语法加密。可以加密使用

    ....

    的pg语法的plsql对象或plpgsql对象。

异常说明

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

示例

为PL/SQL语句和PL/pgSQL语句加密,用例如下。

\set SQLTERM /
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+
htpt6DqPHq8uEHewSse+kc8myKyoI7I9f5mTI2Ob72I=          +
END;
(1 row)


\set SQLTERM /
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+
EmUKDO9/8ueGxdvzZRYwU3o6X3YY9jZ6FeYIauqV+oM=                    +
END;                                                            +
$$language plpgsql;
(1 row)

15.4.2. DBMS_DDL.CREATE_WRAPPED

功能描述

加密并执行语句。

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

语法格式

DBMS_DDL.CREATE_WRAPPED(ddl VARCHAR2);

参数说明

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

注意事项

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

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

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

  • 支持

    ......

    的pg语法加密。可以加密使用

    ....

    的pg语法的PL/SQL对象或PL/pgSQL对象。

异常说明

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

示例

以下用例为使用create_wrapped子程序创建加密的PL/SQL对象和PL/pgSQL对象。

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

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

15.5. 插件dbms_ddl卸载方法

无法卸载。

15.6. 插件dbms_ddl升级方法

若该插件有升级版本则通过 alter extension 来升级插件。

示例,由 1.0 升级到 1.1

ALTER EXTENSION dbms_ddl UPDATE TO '1.1';
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论