DROP PROCEDURE¶
DROP PROCEDURE语句用于删除当前 Schema 中用户定义的过程(User-Defined Procedure,简称 UDP)。
Note
对非默认 Schema 或其中的对象执行操作时,用户既要通过隐式访问规则或显式USAGE授权获得该 Schema 的访问权,也要具备目标操作所需的权限。Schema 访问校验和目标操作所需的权限校验相互独立,满足其中一项不能替代另一项。Schema 访问控制不适用于临时图、内置 Procedure 和内置 Function。更多信息,请参见 Schema 访问控制。
前提条件¶
- 若要删除 UDP,必须是 UDP 的所有者,或具备在 UDP 上执行
DROP操作的权限,或具备在当前 Schema 执行DROP ANY PROCEDURE操作的权限。更多信息,请参见角色与权限。 - 已创建 UDP。更多信息,请参见 CREATE PROCEDURE。
语法¶
- 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)
'''