SQL COMMAND · 函数与过程
DROP ROUTINE
移除一个例程
DROP函数与过程引入 11现存至 20 devel0 次语法变更
- 动词
DROP- 对象
ROUTINE- 分组
- 函数与过程
- 引入版本
- 11
- 状态
- 现存
- 语法变更次数
- 0
- 手册小节数
- 5
版本轨迹
相对 PostgreSQL 17 无变化。
语法铁道图 PostgreSQL 18
沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。
语法概要
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选项是扩展。允许指定参数模式和参数名是扩展,而且在给出模式时查找规则也有所不同。
用户可定义的聚合函数是扩展。
另见
注意,没有CREATE ROUTINE命令。
语法演化
相邻大版本之间的差异,新的在前。版本号链接到对应快照。
PostgreSQL 14← 13正文更新
正文更新PostgreSQL 11← 10新增此命令
同组命令
| 命令 | 动词 | 对象 | 版本变动 | 最近变更 |
|---|---|---|---|---|
CALL | CALL | — | — | |
| 调用一个过程 | 现存 | |||
DO | DO | — | — | |
| 执行匿名代码块 | 现存 | |||
CREATE AGGREGATE | CREATE | AGGREGATE | 203 次 | |
| 定义一个新的聚合函数 | 现存 | |||
ALTER AGGREGATE | ALTER | AGGREGATE | 141 次 | |
| 更改一个聚合函数的定义 | 现存 | |||
DROP AGGREGATE | DROP | AGGREGATE | — | |
| 移除一个聚合函数 | 现存 | |||
CREATE FUNCTION | CREATE | FUNCTION | 143 次 | |
| 定义一个新函数 | 现存 | |||
ALTER FUNCTION | ALTER | FUNCTION | 143 次 | |
| 更改函数的定义 | 现存 | |||
DROP FUNCTION | DROP | FUNCTION | — | |
| 移除一个函数 | 现存 | |||
CREATE LANGUAGE | CREATE | LANGUAGE | 131 次 | |
| 定义一种新的过程语言 | 现存 | |||
ALTER LANGUAGE | ALTER | LANGUAGE | 141 次 | |
| 更改一种过程语言的定义 | 现存 | |||
DROP LANGUAGE | DROP | LANGUAGE | — | |
| 移除一种过程语言 | 现存 | |||
CREATE PROCEDURE | CREATE | PROCEDURE | 141 次 | |
| 定义一个新过程 | 现存 | |||
ALTER PROCEDURE | ALTER | PROCEDURE | 142 次 | |
| 更改过程的定义 | 现存 | |||
DROP PROCEDURE | DROP | PROCEDURE | — | |
| 移除一个过程 | 现存 | |||
ALTER ROUTINE | ALTER | ROUTINE | 142 次 | |
| 更改一个例程的定义 | 现存 | |||
DROP ROUTINE | DROP | ROUTINE | — | |
| 移除一个例程 | 现存 | |||
CREATE TRANSFORM | CREATE | TRANSFORM | — | |
| 定义一个新的转换 | 现存 | |||
DROP TRANSFORM | DROP | TRANSFORM | — | |
| 移除一个转换 | 现存 | |||