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 documentation: CALL

分类

SQL命令

另请参阅

过程

反馈

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