Postgres 11存储过程未返回结果

时间:2018-12-14 22:12:41

标签: stored-procedures postgresql-11

在Postgres 11中,存储过程是否不打算返回结果集?因为当我们运行以下命令时,它表示已成功运行,但未返回任何结果。

CREATE OR REPLACE PROCEDURE test()
LANGUAGE sql
AS $$
  SELECT * from aTable;
$$;

call test();

1 个答案:

答案 0 :(得分:2)

PostgreSQL过程最多可以返回一个值:

CREATE PROCEDURE test (INOUT x int)
LANGUAGE sql
AS $$
    SELECT x;
$$;

# call test (1);
 x
---
 1
(1 row)

Postgresql 功能更加灵活:

create or replace function test()
RETURNS setof atable
language sql
as $$
select * from atable;
$$;

过程的优点是它们可以控制事务。如果不需要,最好使用一个函数。