DROP ROUTINE — 删除一个例程
DROP ROUTINE [ IF EXISTS ]name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
DROP ROUTINE
删除一个或多个现有例程的定义。术语“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
选项是一种扩展
指定参数模式和名称的能力是一种扩展,当给定参数模式时,查找规则也不同。
用户定义聚集函数是一种扩展。