暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为openGauss CREATE-PROCEDURE

华为高斯 2020-06-01
2046

功能描述

创建一个新的存储过程。

注意事项

  • 如果创建存储过程时参数或返回值带有精度,不进行精度检测。
  • 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。
  • 在创建存储过程时,存储过程内部通过SET语句设置current_schema和search_path无效。执行完函数search_path和current_schema与执行函数前的search_path和current_schema保持一致。
  • 如果存储过程参数中带有出参,SELECT调用存储过程必须缺省出参,CALL调用存储过程适配A,调用非重载函数时必须指定出参,对于重载的package函数,out参数可以缺省,具体信息参见CALL的示例。
  • 存储过程指定package属性时支持重载。
  • 在创建procedure时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。

语法格式

postgres=# CREATE [ OR REPLACE ] PROCEDURE procedure_name [ ( {[ argmode ] [ argname ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] [ { IMMUTABLE | STABLE | VOLATILE } | { SHIPPABLE | NOT SHIPPABLE } | {PACKAGE} | [ NOT ] LEAKPROOF | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} | COST execution_cost | ROWS result_rows | SET configuration_parameter { [ TO | = ] value | FROM CURRENT } ][ ... ] { IS | AS } plsql_body /

参数说明

  • OR REPLACE

    当存在同名的存储过程时,替换原来的定义。

  • procedure_name

    创建的存储过程名称,可以带有模式名。

    取值范围:字符串,要符合标识符的命名规范。

  • argmode

    参数的模式。

    须知:
    VARIADIC用于声明数组类型的参数。

    取值范围: IN,OUT,INOUT或VARIADIC。缺省值是IN。只有OUT模式的参数后面能跟VARIADIC。并且OUT和INOUT模式的参数不能用在RETURNS TABLE的过程定义中。

  • argname

    参数的名称。

    取值范围:字符串,要符合标识符的命名规范。

  • argtype

    参数的数据类型。

    取值范围:可用的数据类型。

  • IMMUTABLE、STABLE

    行为约束可选项。各参数的功能与CREATE FUNCTION类似,详细说明见CREATE FUNCTION

  • plsql_body

    PL/SQL存储过程体。

    须知:
    当在存储过程体中进行创建用户等涉及用户密码相关操作时,系统表及csv日志中会记录密码的明文。因此不建议用户在存储过程体中进行涉及用户密码的相关操作。

说明:
argument_name和argmode的顺序没有严格要求,推荐按照argument_name、argmode、argument_type的顺序使用。

相关链接

DROP PROCEDURE

优化建议

  • analyse | analyze
    • 不支持在事务或匿名块中执行analyze 。
    • 不支持在函数或存储过程中执行analyze操作。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

文集目录
暂无数据