Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/alter/ Documentation version: v5.3.2 # ALTER PROCEDURE `ALTER PROCEDURE`语句用于修改当前 Schema 中用户定义的过程(User-Defined Procedure,简称 UDP),包括修改 UDP 的名称和描述。 若要修改 UDP 的入参而不改变其名称和过程体,须先[删除该 UDP](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/drop/) 再创建一个新 UDP。 若要修改过程体而不改变其名称和入参,须使用 [CREATE OR REPLACE PROCEDURE](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/create/) 语句。 Note 对非默认 Schema 或其中的对象执行操作时,用户既要通过隐式访问规则或显式`USAGE`授权获得该 Schema 的访问权,也要具备目标操作所需的权限。Schema 访问校验和目标操作所需的权限校验相互独立,满足其中一项不能替代另一项。Schema 访问控制不适用于临时图、内置 Procedure 和内置 Function。更多信息,请参见 [Schema 访问控制](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/schema-access-control/)。 ## 前提条件 - 若要修改 UDP,必须是 UDP 的所有者,或具备在 UDP 上执行`ALTER`操作的权限,或具备在当前 Schema 执行`ALTER ANY PROCEDURE`操作的权限。更多信息,请参见[角色与权限](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/)。 - 已创建 UDP。更多信息,请参见 [CREATE PROCEDURE](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/create/)。 ## 语法 语法图源码 alter_procedure_statement parameter_declaration ```` alter_procedure_statement ::= 'ALTER' 'PROCEDURE' procedure_name '(' ( parameter_declaration ( ',' parameter_declaration )* )? ')' ( ('COMMENT' new_comment_string) | ('RENAME' 'TO' new_procedure_name) ) parameter_declaration ::= parameter_name? parameter_type ('DEFAULT' default_value )? ```` ## 参数 ### `procedure_name` 待修改的 UDP 的名称。 ### `parameter_name` UDP 接受的入参名称。 ### `parameter_type` UDP 接受的入参的数据类型。 ### `default_value` 入参的默认值。 ### `new_comment_string` UDP 的新描述。 ### `new_procedure_name` 待修改的 UDP 的新名称。 `procedure_name`必须是标识符。更多信息,请参见[标识符命名规则](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/keywords-identifiers/)。 ## 示例 ### 修改 UDP 的描述 ```` ''' // 创建名为`test1`的 UDP CREATE OR REPLACE PROCEDURE test4(a INT, b STRING) RETURNS (x INT, y STRING) COMMENT 'test_comment_1' AS { RETURN a, b } ''' ''' ALTER PROCEDURE test4(INT, STRING) COMMENT 'test_comment_2' ''' ```` ### 修改 UDP 的名称 ```` ALTER PROCEDURE test4(INT, STRING) RENAME TO test44 ````