CREATE FUNCTION
是用于定义函数的 DDL 命令。
CREATE FUNCTION
一直存在于 PostgreSQL 中。
更改历史记录
- PostgreSQL 14
- 在创建 SQL 函数时添加了对 SQL 标准函数体的支持(提交 e717a9a1)
- PostgreSQL 12
- 添加了选项
SUPPORT
(提交 1fb57af9)
- 添加了选项
- PostgreSQL 11
- 删除了已过时且非标准的
WITH
子句(提交 4971d2a3)
- 删除了已过时且非标准的
- PostgreSQL 9.6
- 添加了
PARALLEL { UNSAFE | RESTRICTED | SAFE }
选项(提交 7aea8e4f)
- 添加了
- PostgreSQL 9.5
- 添加了
TRANSFORM
属性(提交 cac76582)
- 添加了
- PostgreSQL 8.4
- PostgreSQL 8.3
- PostgreSQL 8.1
- 支持
IN
/OUT
/INOUT
参数(初始提交 47888fe8)
- 支持
- PostgreSQL 7.3
- 语法修改以匹配 SQL99 标准(提交 94bdc485)
注意:此列表中未反映 PostgreSQL 7.3 之前的任何更改。
示例
使用 SQL 执行 CREATE FUNCTION
的基本操作
postgres=# CREATE FUNCTION foo() RETURNS INT LANGUAGE SQL AS $$ SELECT 1; $$; CREATE FUNCTION postgres=# SELECT foo(); foo ----- 1 (1 row)
替换函数体
postgres=# CREATE OR REPLACE FUNCTION foo() RETURNS INT AS $$ SELECT 2; $$ LANGUAGE SQL; CREATE FUNCTION postgres=# SELECT foo(); foo ----- 2 (1 row)
创建 PL/pgSQL 函数
postgres=# CREATE FUNCTION bar() RETURNS INT AS $$ BEGIN RETURN 1; END; $$ LANGUAGE plpgsql; CREATE FUNCTION
请注意,LANGUAGE
子句可以放在最后;这在 PostgreSQL 7.3 之前是强制性的,并且在许多函数示例中仍然可见。
参考文献
- PostgreSQL 文档: CREATE FUNCTION