CALL
是用于调用过程的实用程序命令。
CALL
在 PostgreSQL 11 中添加。
更改历史
- PostgreSQL 11
- 添加 (提交 e4128ee7)
示例
使用以下表格
postgres=# CREATE TABLE foo (id serial primary key, val INT); CREATE TABLE
postgres=# CREATE TABLE bar (id serial primary key, foo_id INT, bar_val INT); CREATE TABLE
一个简单的插入一些数据的过程
postgres=# CREATE OR REPLACE PROCEDURE insert_data(foo_val INT, bar_val INT) LANGUAGE SQL AS $$ WITH foo AS ( INSERT INTO foo VALUES (DEFAULT, foo_val) RETURNING id ) INSERT INTO bar VALUES (DEFAULT, (SELECT foo.id FROM foo), bar_val); $$; CREATE PROCEDURE postgres=# CALL insert_data(1, 2); CALL
一个执行相同操作但返回数据的过程(但请注意,与函数相比,此输出不能与其他查询组合)
postgres=# CREATE OR REPLACE PROCEDURE insert_data_ret(INOUT foo_val INT, IN bar_val INT) LANGUAGE SQL AS $$ WITH foo AS ( INSERT INTO foo VALUES (DEFAULT, foo_val) RETURNING id ) INSERT INTO bar VALUES (DEFAULT, (SELECT foo.id FROM foo), bar_val) RETURNING id; $$; postgres=# CALL insert_data_ret(1, 2); foo_val --------- 2 (1 row)
参考文献
- PostgreSQL 文档: CALL
分类
参见
过程