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 选项是一个扩展。
指定参数模式和名称的能力是一个扩展,当给出模式时,查找规则会有所不同。
用户可定义的聚合函数是一个扩展。
如果您发现文档中的任何内容不正确,与您使用特定功能的经验不符或需要进一步澄清,请使用此表单报告文档问题。