PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

DROP ROUTINE

DROP ROUTINE — 删除一个例程

Synopsis

DROP ROUTINE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
    [ CASCADE | RESTRICT ]

描述

DROP ROUTINE 删除一个或多个现有例程的定义。“例程”一词包括聚集函数、普通函数和过程。参数的说明、更多示例以及更多细节请参见 DROP AGGREGATE、DROP FUNCTION 和 DROP PROCEDURE 下的内容。

注记

DROP ROUTINE 使用的查找规则与 DROP PROCEDURE 的基本相同;特别地,DROP ROUTINE 与该命令一样,会把不含 argmode 标记的参数列表视为可能在按 SQL 标准的定义(即 OUT 参数包含在列表中)进行解释。(DROP AGGREGATE 和 DROP FUNCTION 不会这样做。)

在某些情况下,当不同种类的例程共用同一个名字时,DROP ROUTINE 可能会因歧义错误而失败,而更具体的命令(例如 DROP FUNCTION 等)却能成功。更仔细地指定参数类型列表也能解决这类问题。

这些查找规则也被其他作用于现有例程的命令使用,例如 ALTER ROUTINE 和 COMMENT ON ROUTINE。

示例

删除例程 foo(用于类型 integer):

DROP ROUTINE foo(integer);

无论 foo 是聚集、函数还是过程,这条命令都能正常工作。

兼容性

该命令符合 SQL 标准,并有以下 PostgreSQL 扩展:

  • 标准只允许每条命令删除一个例程。

  • IF EXISTS 选项是一种扩展。

  • 指定参数模式和参数名称的能力是一种扩展,并且在给定了模式时查找规则会有所不同。

  • 用户可定义的聚集函数是一种扩展。

另请参阅

DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINE

注意,不存在 CREATE ROUTINE 命令。