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


    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';
  • 相关阅读:
    Vue基础语法-数据绑定、事件处理和扩展组件等知识详解(案例分析,简单易懂,附源码)
    10-Mysql内核查询成本计算实战-05
    Cannot convert string value ‘UNIFIED_TEST_PLATFORM‘ to an enum value of type
    layUI.open在手机端小屏幕不能显示全页面,也没办法滑动
    springcloud eureka DS Replicas
    在 .NET MAUI 中如何更好地自定义控件
    【JAVA】网页版登录注册系统
    自适应点云配准(RANSAC、ICP)
    python下用cartopy绘制地形晕染(shading)图
    数仓建模—建模工具PdMan
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126510360