【问题标题】:Postgres 11 Stored Procedure not returning resultsPostgres 11存储过程不返回结果
【发布时间】:2018-12-14 22:12:40
【问题描述】:

在 Postgres 11 中,存储过程不打算返回结果集吗?因为当我们运行以下命令时,它说运行成功但没有返回任何结果。

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

call test();

【问题讨论】:

  • 如果要返回结果,请使用函数。

标签: stored-procedures postgresql-11


【解决方案1】:

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;
$$;

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

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2013-06-21
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多