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 FUNCTION
等) 能够正常工作时,DROP ROUTINE
可能失败并出现歧义错误。更仔细地指定参数类型列表也会解决此类问题。
这些查询规则还被其他对现有的例程起作用的命令使用,例如 ALTER ROUTINE
和 COMMENT ON ROUTINE
。
此处的冗余是由于 foo
可以是一个聚合、函数或过程。
DROP ROUTINE foo(integer);
此命令将起作用,与 foo
是聚合、函数还是过程无关。
此命令符合 SQL 标准,以及这些 PostgreSQL 扩展
该标准仅允许每条命令删除一个例程。
IF EXISTS
选项是一种扩展。
指定参数模式和名称的能力是一种扩展,并且当指定模式时查询规则不同。
用户可定义聚合函数是一种扩展。