ALTER FUNCTION
功能描述
修改自定义函数的属性。
注意事项
相比于原始的openGauss,dolphin对于ALTER PROCEDURE语法的修改为:
- 增加可修改 LANGUAGE 选项。
- 增加可修改项 { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 。
- 增加可修改项 SQL SECURITY { DEFINER | INVOKER }。
语法格式
- 修改自定义函数的附加参数。
1. ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
2. action [ ... ] [ RESTRICT ];
其中附加参数action子句语法为。
1. {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
2. | {IMMUTABLE | STABLE | VOLATILE}
3. | {SHIPPABLE | NOT SHIPPABLE}
4. | {NOT FENCED | FENCED}
5. | [ NOT ] LEAKPROOF
6. | { [ EXTERNAL|SQL ] SECURITY INVOKER | [ EXTERNAL|SQL ] 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 FUNCTION f1 (s char(20)) NO SQL;
4. --指定 CONTAINS SQL
5. openGauss=# ALTER FUNCTION f1 (s char(20)) CONTAINS SQL;
7. --指定 LANGUAGE SQL
8. openGauss=# ALTER FUNCTION f1 (s char(20)) LANGUAGE SQL ;
10. --指定 MODIFIES SQL DATA
11. openGauss=# ALTER FUNCTION f1 (s char(20)) MODIFIES SQL DATA;
13. --指定 READS SQL DATA
14. openGauss=# ALTER FUNCTION f1 (s char(20)) READS SQL DATA;
16. --指定 SECURITY INVOKER
17. openGauss=# ALTER FUNCTION f1 (s char(20)) SQL SECURITY INVOKER;
19. --指定 SECURITY DEFINER
20. openGauss=# ALTER FUNCTION f1 (s char(20)) SQL SECURITY DEFINER;
