ALTER PROCEDURE

功能描述

修改自定义存储过程的属性。

注意事项

相比于原始的openGauss,dolphin对于ALTER PROCEDURE语法的修改为:

  1. 增加可修改 LANGUAGE 选项。
  2. 增加可修改项 { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 。
  3. 增加可修改项 SQL SECURITY { DEFINER | INVOKER }。

语法格式

  • 修改自定义存储过程的附加参数。

1. ALTER PROCEDURE procedure_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) 2. action [ ... ] [ RESTRICT ];

其中附加参数action子句语法为。

1. {CALLED ON NULL INPUT | STRICT} 2. | {IMMUTABLE | STABLE | VOLATILE} 3. | {SHIPPABLE | NOT SHIPPABLE} 4. | {NOT FENCED | FENCED} 5. | [ NOT ] LEAKPROOF 6. | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } 7. | AUTHID { DEFINER | CURRENT_USER } 8. | COST execution_cost 9. | ROWS result_rows 10. | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT} 11. | RESET {configuration_parameter | ALL} 12. | COMMENT 'text' 13. | LANGUAGE lang_name 14. | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

参数说明

  • LANGUAGE lang_name

用以实现存储过程的语言的名称,仅语法兼容,实际修改不会生效。 - SQL SECURITY INVOKER

​ 表明该存储过程将带着调用它的用户的权限执行。该参数可以省略。

​ SQL SECURITY INVOKER和SECURITY INVOKER和AUTHID CURRENT_USER的功能相同。

  • SQL SECURITY DEFINER

声明该存储过程将以创建它的用户的权限执行。

SQL SECURITY DEFINER和AUTHID DEFINER和SECURITY DEFINER的功能相同。 - CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA

语法兼容项。

示例

1. --指定 NO SQL
2. openGauss=# ALTER PROCEDURE proc1() NO SQL;

4. --指定 CONTAINS SQL
5. openGauss=# ALTER PROCEDURE proc1() CONTAINS SQL;

7. --指定 LANGUAGE SQL
8. openGauss=# ALTER PROCEDURE proc1() CONTAINS SQL LANGUAGE SQL ;

10. --指定 MODIFIES SQL DATA
11. openGauss=# ALTER PROCEDURE proc1() CONTAINS SQL MODIFIES SQL DATA;

13. --指定 SECURITY INVOKER
14. openGauss=# ALTER PROCEDURE proc1() SQL SECURITY INVOKER;

相关链接

ALTER PROCEDURE