说明:

数据库系统使用过程中,有些业务功能在特殊的安全级别情况下,需要对数据库中的函数和存储过程进行加密存储,以保证数据库函数和过程的代码安全性。KingbaseES 数据库,提供了DBMS_DDL扩展插件功能,帮助对数据库中的函数和存储过程进行加密存储。

ddms_ddl扩展介绍:

DBMS_DDL是KingbaseES的一个扩展插件,主要用于创建一个PL/SQL函数、过程。DBMS_DDL系统自带扩展,不需要单独创建。

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

ddms_ddl扩展:

DBMS_DDL拓展插件内容:

test=# \dx+ dbms_ddl
对象用于扩展 "dbms_ddl"
对象描述
---------------------------
function wrapped(varchar)
package dbms_ddl
(2 行记录)
DBMS_DDL.WRAP

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

语法格式:

DBMS_DDL.WRAP(ddl VARCHAR2)RETURN VARCHAR2;

参数说明:

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

返回值:

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

DBMS_DDL.CREATE_WRAPPED

加密并执行语句。

语法格式

DBMS_DDL.CREATE_WRAPPED(ddl VARCHAR2);

参数说明:

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

ddms_ddl示例:

DBMS_DDL.WRAP加密函数体
test=# select dbms_ddl.wrap(
test(# q'[
test'# CREATE PROCEDURE getValue(pid int) AS
test'# BEGIN
test'# select now();
test'# RAISE NOTICE 'pid=%',pid;
test'# END ;
test'# ]');
wrap
--------------------------------------------------------------
+
CREATE PROCEDURE getValue(pid int) AS WRAPPED +
Ysyb9n+AUBSMPkhTULtxOjaiiiMoxXYtRVnTlW2f1dJa/DnOklEoLqQyyouJ+
2oiVpC/nz/w26eThsPQr5juu3g== +
END;
(1 row)
test=#  select dbms_ddl.wrap(
test(# q'[
test'# CREATE FUNCTION getName(pid int) RETURN VARCHAR2 AS
test'# DECLARE
test'# nam varchar(10);
test'# BEGIN
test'# SELECT 'return='|| to_char(pid) INTO nam FROM dual;
test'# RETURN nam;
test'# EXCEPTION
test'# WHEN no_data_found THEN
test'# RETURN 'NOFUOUND';
test'# WHEN OTHERS THEN
test'# RETURN 'OTHERS';
test'# END ;
test'# ]');
wrap
--------------------------------------------------------------
+
CREATE FUNCTION getname(pid int) RETURN VARCHAR2 AS WRAPPED +
jLdZaVH1HEkWXnhly2vcpWdyh1HhWuG91+ijKCp4cjvAE17MFcj9Meti/eJ9+
P7Giz2aysfFssGzKIYFokBykv1teJ7WJ8/dcoUpWFMgcjJT1slOzvIETLAtJ+
RgIhuXS7UcvJA+And0M7wAqPIcO+hGDVGtrobdjyWEsjj67x6/J/UArN8fy6+
4Kno4qUsLY8Dw7W+BSbAa3Ton60ynUemm6EtjlhQuqucXQVJsFtL1A9LU4vN+
3NlmM1eD0QLZbi7T166n7crOcK4iZcBm3bhVqJbJMrHlfO1y8s+mCGEUIZw=+
END;
(1 行记录)
DBMS_DDL.CREATE_WRAPPED加密并执行函数体
test=# CALL dbms_ddl.CREATE_WRAPPED(
test(# q'[
test'# CREATE PROCEDURE getValue(pid int) AS
test'# BEGIN
test'# select now();
test'# RAISE NOTICE 'pid=%',pid;
test'# END ;
test'# ]');
CALL
test=# \sf getValue
CREATE OR REPLACE PROCEDURE public.getvalue(pid integer)
AS WRAPPED
w5K/gWuBfiREAZ+LBYFLtu01ayNoHgqoSDf9ZtsG+KuFntIAS2i7Zji6CygE
HViaQ1VF6XfYrvHde1cmY2zxqw==
END
test=# CALL dbms_ddl.CREATE_WRAPPED(
test(# q'[
test'# CREATE FUNCTION getName(pid int) RETURN VARCHAR2 AS
test'# DECLARE
test'# nam varchar(10);
test'# BEGIN
test'# SELECT 'return='|| to_char(pid) INTO nam FROM dual;
test'# RETURN nam;
test'# EXCEPTION
test'# WHEN no_data_found THEN
test'# RETURN 'NOFUOUND';
test'# WHEN OTHERS THEN
test'# RETURN 'OTHERS';
test'# END ;
test'# ]');
CALL
test=# \sf getName
CREATE OR REPLACE FUNCTION public.getname(pid integer)
RETURNS varchar
AS WRAPPED
jLdZaVH1HEkWXnhly2vcpWdyh1HhWuG91+ijKCp4cjvAE17MFcj9Meti/eJ9
P7Giz2aysfFssGzKIYFokBykv1teJ7WJ8/dcoUpWFMgcjJT1slOzvIETLAtJ
RgIhuXS7UcvJA+And0M7wAqPIcO+hGDVGtrobdjyWEsjj67x6/J/UArN8fy6
4Kno4qUsLY8Dw7W+BSbAa3Ton60ynUemm6EtjlhQuqucXQVJsFtL1A9LU4vN
3NlmM1eD0QLZbi7T166n7crOcK4iZcBm3bhVqJbJMrHlfO1y8s+mCGEUIZw=
END

加密函数调用

test=# call getValue(110);
注意: pid=110
now
-------------------------------
2022-12-10 14:53:03.645849+08
(1 行记录) CALL
test=# select getName(120);
getname
------------
return=120
(1 行记录)

KingbaseES 函数与存储过程内容加密的更多相关文章

  1. sqlserver自定义函数与存储过程的区别 实例详解

    分享下sql server自定义函数与存储过程的区别,一起来学习下. 一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到 ...

  2. (转)对存储过程进行加密和解密(SQL 2008/SQL 2012)

    原文地址:http://www.cnblogs.com/wghao/archive/2012/12/30/2837642.html 开始: 在网络上,看到有SQL Server 2000和SQL Se ...

  3. Mysql导出函数、存储过程

    下面是导出存储过程的代码 1 # mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名 其中,-d 表示--no-create-db, -n表示--no-d ...

  4. mysql中的函数与存储过程

    mysql中的函数:1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create fu ...

  5. MySQL自定义函数与存储过程

    1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...

  6. MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能

    一.索引,分页性能,执行计划,慢日志 (1)索引的种类,创建语句,名词补充(最左前缀匹配,覆盖索引,索引合并,局部索引等): import sys # http://www.cnblogs.com/w ...

  7. MySQL 视图、触发器、函数、存储过程

    1. 视图 1.1 什么是视图 通俗来讲,视图就是一条 select 语句执行后返回的结果集.所有我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上. 1.2 视图的特性 视图是对若干张基 ...

  8. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

  9. PL-SQL 存储函数和存储过程

     PL-SQL 存储函数和存储过程 ORACLE 提供能够把PL/SQL 程序存储在数据库中,并能够在不论什么地方来执行它.这样就叫存储过程或函数. 过程和函数统称为PL/SQL子程序.他们是被命 ...

  10. 描述了say_hello函数的具体内容,调用zend_printf系统函数在php中打印字符串

    下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构 ...

随机推荐

  1. HTMLElement对象

    HTMLElement对象 任何HTML元素都继承于HTMLElement对象,一些元素直接实现这个接口,而另一些元素通过多层继承来实现它. 属性 从其父元素Element继承属性,并从Documen ...

  2. lsattr命令

    lsattr命令 lsattr命令用于显示文件的属性. 语法 lsattr [-RVadlv] [file | folder] 参数 -a: 显示所有文件和目录,包括以.为名称开头字符的额外内建,即现 ...

  3. Oracle高级队列介绍

    原始链接:http://www.oracle-developer.net/display.php?id=411 oracle高级队列介绍 高级队列Advanced Queuing(AQ)在oracle ...

  4. AIGC程序员效能提升之道

    得益于IT产业近几年的繁荣,老杨所在公司的业务也出奇的兴隆,每天干不完的工作背后,也意味着健康的消耗和体重的不断增加. 曾记否,刚毕业的老杨体重刚刚堪堪破百,同事们经常调侃他说是一阵风就能吹走,经过了 ...

  5. ~Keven_He的黑历史~

    "先生,我认为文言文比白话文更加简洁" "请举例" "就好像沉鱼落雁这句成语不是比白话文更加简洁吗" "沉鱼落雁是四个字,该用白话 ...

  6. Bind DNS Server的基础配置

    1.访问https://192.168.3.254:10000 由于SSL证书是不安全的,我用的Firefox浏览器会阻止打开网页: 看到上述界面,先选择"高级", 然后再选择&q ...

  7. 用NavigationManager实现订单的列表和新增页面之间的导航

    1.在订单列表页面放置"新增"按钮 2.注入NavigationManager,按钮被点击后导航到新增订单的路径 3.测试一下,能工作了. 4.订单新增后,返回订单列表页面 5.测 ...

  8. 【Azure Developer】使用REST API获取Activity Logs、传入Data Lake的数据格式问题

    问题一:.  如何在用REST API获取活动日志时,控制输出的项? [答]参考REST API对于获取活动日志的说明接口,在参数是$filter和$select中可以分别控制过滤条件和输出项 GET ...

  9. 【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)

    问题描述 在Azure上创建的数据库,单独通过SQL的连接工具是可以访问,但在Web App却无法访问,错误信息为: { "timestamp": "2021-05-20 ...

  10. Windows NFS 真弱 → 中文乱码导致文件找不到

    开心一刻 正睡着觉,然后来了个电话 对方说:你好,方便面是吗 我愣了一下,以为是恶作剧 回了句:我不是,我是火腿肠! 就挂了电话 又躺了好一会,忽然琢磨过来...... 不对呀,她好像说的是:你好,方 ...