2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11

DROP ROUTINE

DROP ROUTINE — 移除例程

概要

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

描述

DROP ROUTINE 移除一个或多个现有例程的定义。“例程”一词包括聚合函数、普通函数和过程。有关参数的描述、更多示例和详细信息,请参见 DROP AGGREGATEDROP FUNCTIONDROP PROCEDURE

注释

DROP ROUTINE 使用的查找规则与 DROP PROCEDURE 的查找规则基本相同;特别是,DROP ROUTINE 与该命令一样,会考虑一个没有 argmode 标记的参数列表,并可能使用 SQL 标准的定义,即 OUT 参数包含在列表中。(DROP AGGREGATEDROP FUNCTION 不这样做。)

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

这些查找规则也用于操作现有例程的其他命令,例如 ALTER ROUTINECOMMENT ON ROUTINE

示例

删除类型为 integer 的例程 foo

DROP ROUTINE foo(integer);

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

兼容性

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

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

  • IF EXISTS 选项是一个扩展。

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

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

另请参阅

DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, ALTER ROUTINE

请注意,没有 CREATE ROUTINE 命令。

提交更正

如果您在文档中发现任何不正确、与您实际使用的功能不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。