云数据库 GaussDB-CREATE PACKAGE:注意事项

时间:2023-11-01 16:22:10

注意事项

  • package只支持集中式,无法在分布式中使用。
  • 在package specification中声明过的函数或者存储过程,必须在package body中找到定义。
  • 在实例化中,无法调用带有commit/rollback的存储过程。
  • 不能在Trigger中调用package函数。
  • 不能在外部SQL中直接使用package当中的变量。
  • 不允许在package外部调用package的私有变量和存储过程。
  • 不支持其它存储过程不支持的用法,例如,在function中不允许调用commit/rollback,则package的function中同样无法调用commit/rollback。
  • 不支持schema与package同名。
  • 只支持A风格的存储过程和函数定义。
  • 不支持package内有同名变量,包括包内同名参数。
  • package的全局变量为session级,不同session之间package的变量不共享。
  • package中调用自治事务的函数,不允许使用package中的cursor变量,以及递归的使用package中cursor变量的函数。
  • package中不支持声明ref cursor变量。
  • package默认为SECURITY INVOKER权限,如果想将默认行为改为SECURITY DEFINER权限,需要设置guc参数behavior_compat_options='plsql_security_definer'。
  • 被授予CREATE ANY PACKAGE权限的用户,可以在public模式和用户模式下创建PACKAGE。
  • 如果需要创建带有特殊字符的package名,特殊字符中不能含有空格,并且最好设置GUC参数behavior_compat_options="skip_insert_gs_source",否则可能引起报错。
support.huaweicloud.com/centralized-devg-v2-opengauss/devg_03_0560.html