云数据库 GAUSSDB-CREATE PACKAGE:语法格式
语法格式
- CREATE PACKAGE SPECIFICATION语法格式。
CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name [ invoker_rights_clause ] { IS | AS } item_list_1 END [ package_name ];
- invoker_rights_clause可以被声明为AUTHID DEFINER或者AUTHID CURRENT_USER,分别为定义者权限和调用者权限。
- item_list_1可以为声明的变量或者存储过程以及函数。
- END后的package_name可省略(gs_dump生成的sql文件,PACKAGE定义会自动补上END后名称)。
PACKAGE SPECIFICATION(包头)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在PACKAGE SPECIFICATION中只能声明存储过程、函数,不能定义存储过程或者函数。
- CREATE PACKAGE BODY语法格式。
CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name { IS | AS } declare_section [ initialize_section ] END [ package_name ];
END后的package_name可省略(gs_dump生成的sql文件,PACKAGE定义会自动补上END后名称)。
PACKAGE BODY(包体内)定义了包的私有变量、函数等。如果变量或者函数没有在PACKAGE SPECIFICATION中声明过,那么这个变量或者函数则为私有变量或者私有函数。
PACKAGE BODY也可以声明实例化部分,用来初始化package,详见示例。