Redrock Postgres 搜索 英文
版本: 11 / 12 / 13 / 14 / 15 / 16 / 17

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 FUNCTION 等) 能够正常工作时,DROP ROUTINE 可能失败并出现歧义错误。更仔细地指定参数类型列表也会解决此类问题。

这些查询规则还被其他对现有的例程起作用的命令使用,例如 ALTER ROUTINECOMMENT ON ROUTINE

示例

此处的冗余是由于 foo 可以是一个聚合、函数或过程。

DROP ROUTINE foo(integer);

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

兼容性

此命令符合 SQL 标准,以及这些 PostgreSQL 扩展

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

  • IF EXISTS 选项是一种扩展。

  • 指定参数模式和名称的能力是一种扩展,并且当指定模式时查询规则不同。

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

另请参见

DROP AGGREGATEDROP FUNCTIONDROP PROCEDUREALTER ROUTINE

请注意,没有 CREATE ROUTINE 命令。