删除存储过程。
语法
DROP PROCEDURE [ IF EXISTS ] name
[ ([ [ argmode ] [ argname ] argtype ] [, ...]) ]
[ CASCADE | RESTRICT ]
说明
DROP PROCEDURE
删除现有程序的定义。要执行该命令,您必须是超级用户或存储过程的所有者。如果这是一个重载存储过程,则必须为存储过程指定所有输入(IN
、IN OUT
)参数的数据类型。(该要求与 Oracle 数据库不兼容。在 Oracle 中,仅指定存储过程名称。PolarDB PostgreSQL版(兼容Oracle)允许重载存储过程名称,因此在PolarDB PostgreSQL版(兼容Oracle)中,重载存储过程的 DROP PROCEDURE
命令需要使用输入参数数据类型给定的存储过程特征。)
使用 IFEXISTS
、CASCADE
或 RESTRICT
与 Oracle 数据库不兼容,仅由PolarDB PostgreSQL版(兼容Oracle)使用。
参数
参数 | 说明 |
---|---|
IF EXISTS | 如果存储过程不存在,不引发错误。在这种情况下,会发出通知。 |
name | 现有存储过程的名称(可能是 schema 限定的)。 |
argmode | 参数的模式:IN 、INOUT 或 OUT 。如果省略,则默认值为 IN 。请注意,DROP PROCEDURE 实际上并不受 OUT 参数影响,因为仅需要输入参数即可确定存储过程的身份。因此,仅列出 IN 和 INOUT 参数即可。(指定 argmode 与 Oracle 数据库不兼容,它仅适用于PolarDB PostgreSQL版(兼容Oracle)。) |
argname | 参数的名称。请注意,DROP PROCEDURE 实际上并不受参数名称影响,因为仅需参数数据类型即可确定存储过程的身份。(指定 argname 与 Oracle 数据库不兼容,它仅适用于PolarDB PostgreSQL版(兼容Oracle)。) |
argtype | 存储过程参数的数据类型。(指定 argtype 与 Oracle 数据库不兼容,它仅适用于PolarDB PostgreSQL版(兼容Oracle)。) |
CASCADE | 自动删除依赖于存储过程的对象,并就此删除依赖于这些对象的所有对象。 |
RESTRICT | 如果存在依赖于过程的任何对象,则拒绝删除存储过程。这是默认值。 |
示例
以下命令会删除 select_emp
存储过程。
DROP PROCEDURE select_emp;