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 之前的任何更改。
示例
CREATE FUNCTION 的基本示例,这里创建执行 SQL 的函数
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
