【技术分享】Gauss DB_package发表时间:2023-06-05 10:32 package介绍 PACKAGE是一组相关存储过程、函数、变量、常量、游标等PL/SQL程序的组合,具有面向对象 的特点,可以对PL/SQL程序设计元素进行封装。 PACKAGE中的函数具有统一性,创建、删除、修改都统一进行。 PACKAGE包含包头( Package Specification)和Package Body两个部分,其中包头所包含的声明可以被外部函数、匿名块等访问,而在包体中包含的声明不能被外部函数、匿名块等访问,只能被包体内函数和存储过程等访问。 在分布式下,仅支持在ORA兼容性数据库中使用PACKAGE。 创建package 语法格式 CREATE PACKAGE SPECIFICATION语法格式 CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name[ invoker_rights_clause ] { IS | AS } item_list_1 END package_name;item_list_1可以为声明的变量或者存储过程以及函数。 PACKAGE SPECIFICATION(包头)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在PACKAGE SPECIFICATION中只能声明存储过程,函数,不能定义存储过程或者函数。 CREATE PACKAGE BODY语法格式 CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name{ IS | AS } declare_section [ initialize_section ] END package_name; PACKAGE BODY(包体)定义了包的私有变量,函数等。如果变量或者函数没有在PACKAGE SPECIFICATION 中声明过,那么这个变量或者函数则为私有变量或者函数。 PACKAGE BODY也可以声明实例化部分,用来初始化package。 示例 gsql连接数据库 su - Rubysource gauss_env_file gsql -d postgres -U root -W 1234%qwerT -p 8000 -r
创建用户 create user lsq createdb password "Abcd_1234";alter user lsq with sysadmin; 创建ORA兼容性数据库 CREATE DATABASE ora_compat_db DBCOMPATIBILITY 'ORA';\c ora_compat_db;
创建包头 DROP TABLE IF EXISTS test1;CREATE OR REPLACE PACKAGE emp_bonus ISvar1 INT:=1;--公有变量var2 INT:=2;PROCEDURE testpro1(var3 INT);--公有存储过程,可以被外部调用END emp_bonus;/
创建包体 CREATE OR REPLACE PACKAGE BODY emp_bonus ISvar3 INT:=3;var4 INT:=4;PROCEDURE testpro1(var3 INT)ISBEGINCREATE TABLE IF NOT EXISTS test1(col1 INT);INSERT INTO test1 VALUES(var1);INSERT INTO test1 VALUES(var4);END;BEGIN --实例化开始var4:=9;testpro1(var4);END emp_bonus;/
ALTER PACKAGE OWNER ALTER PACKAGE emp_bonus OWNER TO lsq;--将PACKAGE emp_bonus的所属者改为lsq
调用PACKAGE --使用call调用package存储过程CALL emp_bonus.testpro1(1); DROP TABLE IF EXISTS test1;--使用select调用package存储过程SELECT emp_bonus.testpro1(1); DROP TABLE IF EXISTS test1;--匿名块里调用package存储过程BEGINemp_bonus.testpro1(1);END;/DROP TABLE IF EXISTS test1;--删除PACKAGE。DROP PACKAGE emp_bonus;--删除数据库。DROP DATABASE ora_compat_db;
查看package \pset expanded onselect * from gs_package;
运行及调试package 运行navicat
建立数据库连接 右键“我的连接”---->“新建连接”
新建连接窗口中,左侧供应商筛选选择“华为云”,然后右侧窗口选择“华为云 云数据库GaussDb分布式”,下一步
下一窗口中,按顺序 1、给连接起个名 2、添加主机 3、更改主机ip及端口信息 4、输入数据库用户名 5、输入数据库用户密码
测试连接:
显示连接成功后,点确认即可。
选择package 双击ora_coompat_db数据库,然后双击public。 点击快捷图标“其他”,选择“包”
此时会显示出包
双击显示的包,进入包的运行调试界面
运行package 点击“运行”
输入相关参数后确定,显示运行结果
调试package 点击“调试”
选择需调试的过程
选择后确定后,进入存储过程调试界面(后续,参考前一节介绍的:运行及调试存储过程)
参考文档 云数据库 GaussDB 8.1 分布式版开发指南.pdf P2099 10.14 PACKAGE P1413 7.12.4.31 CREATE PACKAGE |