Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/procedures/drop/ Documentation version: v5.3.2 # DROP PROCEDURE `DROP PROCEDURE`语句用于删除当前 Schema 中用户定义的过程(User-Defined Procedure,简称 UDP)。 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 上执行`DROP`操作的权限,或具备在当前 Schema 执行`DROP 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/)。 ## 语法 语法图源码 drop_procedure_statement parameter_declaration ```` drop_procedure_statement ::= 'DROP' 'PROCEDURE' ('IF EXISTS')? procedure_name ( '(' ( parameter_declaration ( ',' parameter_declaration )* )? ')' )? parameter_declaration ::= parameter_name? parameter_type ('DEFAULT' default_value )? ```` ## 参数 ### `IF EXISTS` 该子句会检查待删除的 UDP 是否存在。如果不存在,则不会删除 UDP,也不会抛出异常。 若不指定该子句,且待删除的 UDP 不存在,则会抛出异常。 ### `procedure_name` 待删除的 UDP 的名称。 若要通过名称删除 UDP,请确保当前 Schema 中不存在同名的 UDP。否则,必须同时指定名称和入参类型,以唯一标识待删除的 UDP。 ### `parameter_name` UDP 接受的输入参数的名称。 ### `parameter_type` UDP 的输入参数的数据类型。 ### `default_value` 输入参数的默认值。 ## 示例 ### 通过名称删除 UDP ```` ''' // 创建名为`test1`的 UDP CREATE OR REPLACE PROCEDURE test1() RETURNS ret INT AS { RETURN 1 } ''' ''' DROP PROCEDURE test1 ''' ```` ### 通过名称和入参类型删除 UDP ```` ''' // 创建名为`test2`的 UDP CREATE OR REPLACE PROCEDURE test2(a INT, b STRING) RETURNS ret INT AS { RETURN a } ''' ''' DROP PROCEDURE test2(INT, STRING) ''' ````