跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

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
DROP PROCEDURE IF EXISTS procedure_name ( parameter_declaration , )
parameter_declaration
parameter_name parameter_type DEFAULT default_value

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)
'''