DROP ROUTINE

DROP ROUTINE — 移除例程

概要

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。

示例

删除类型为 integer 的例程 foo

DROP ROUTINE foo(integer);

无论 foo 是聚合、函数还是过程,此命令都将起作用。

兼容性

此命令符合 SQL 标准,并带有以下 PostgreSQL 扩展

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

  • IF EXISTS 选项是一个扩展。

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

  • 用户定义的聚合函数是一个扩展。

另请参阅

DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINE

请注意,没有 CREATE ROUTINE 命令。