CALL

用于调用过程的 SQL 命令

CALL 是用于调用过程的实用程序命令。

CALLPostgreSQL 11 中添加。

更改历史

示例

使用以下表格

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

分类

SQL 命令

参见

过程

反馈

提交任何关于 "CALL" 的评论、建议或更正 此处