云数据库 GAUSSDB-CREATE PROCEDURE:参数说明
参数说明
- OR REPLACE
当存在同名的存储过程时,替换原来的定义。
- procedure_name
创建的存储过程名称,可以带有模式名。
取值范围:字符串,要符合标识符命名规范。
建议不要创建和系统函数重名的函数,否则调用时需要指定函数的schema。
- argmode
参数的模式。
VARIADIC用于声明数组类型的参数。
取值范围: IN,OUT,INOUT或VARIADIC。缺省值是IN。只有OUT模式的参数后面能跟VARIADIC。并且OUT和INOUT模式的参数不能用在RETURNS TABLE的过程定义中。
- argname
参数的名称。
取值范围:字符串,要符合标识符命名规范。
- argtype
参数的数据类型。可以使用%ROWTYPE间接引用表的类型,或者使用%TYPE间接引用表或复合类型中某一列的类型。
取值范围:可用的数据类型。
argname和argmode的顺序没有严格要求,推荐按照argname、argmode、argtype的顺序使用。
- expression
参数的默认表达式。
- 在参数a_format_version值为10c和a_format_dev_version值为s2的情况下,参数为INOUT模式时不支持默认表达式。
- 推荐使用方式:将所有默认值参数定义在所有非默认值参数后。
- 调用带有默认参数的函数时,入参从左往右排入函数,如果有非默认参数的入参缺失则报错。
- 打开 proc_uncheck_default_param 参数,调用带有默认参数的函数时,入参从左往右排入函数,允许缺省默认参数个入参,如果有非默认参数的入参缺失,则会用错位的默认值填充该参数。
- 在参数a_format_version值为10c、a_format_dev_version值为s1和关闭proc_outparam_override,函数参数同时包括out出参和default时,默认值不可缺省。
- IMMUTABLE、STABLE等
行为约束可选项。各参数的功能与CREATE FUNCTION类似,详细说明见CREATE FUNCTION
- plsql_body
PL/SQL存储过程体。
创建一个存储过程时,plsql_body支持以“END;”或“END procedure_name;”两种形式结尾。
以“END procedure_name;”结尾时遵循以下约束:
- 仅ORA兼容模式(数据库级别)下支持使用。
- 仅支持ORA风格创建语法。
- 仅支持END后设置存储过程名称的场景。
- 创建的存储过程在DBE_PLDEVELOPER.gs_source、my_source、db_source、adm_source视图中显示与存储过程创建时定义相同(创建时“END+名称”则显示“END+名称”);在pg_proc视图以及\sf查看时,最外层END后在任何情况下都不跟名称,内部则按照创建时定义(创建时“END+名称”则显示“END+名称”)显示。
- gs_dump生成的sql文件,存储过程无法保留最外层END后名称。
- 以IF/LOOP命名存储过程或嵌套子程序时,不支持以END IF/LOOP结束存储过程。
当在存储过程体中进行创建用户、修改密码或加解密等涉及密码或密钥相关操作时,系统表及日志中会记录密码或密钥的明文信息。为防止敏感信息泄露,不建议用户在存储过程体中进行涉及密码或密钥等敏感信息的相关操作。