【技术分享】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


分享到:
快速导航 首页 解决方案 实施分享 关于我们 联系我们
联系方式
联系邮箱:callcenter@antute.com.cn 联系电话:
400-069-0667
官方公众号