stored-procedures - Postgres 11 存储过程不返回结果

标签 stored-procedures postgresql-11

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

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

call test();

最佳答案

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

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

关于stored-procedures - Postgres 11 存储过程不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53787546/

相关文章:

SQL 服务器 : How can I select everything from a table with a prefix?

windows - Win 10 Postgresql 11 数据库集群初始化失败

java - 从 Java 中的存储过程 (sql) 检索数据

javascript - Snowflake 中的 UDF JavaScript 实现

mysql - MySQL 的先验等价物连接

postgresql - 使用存储过程 PostgreSQL 11.1 从表中检索数据

postgresql - 在 PostgreSQL 11.19(Azure 灵活数据库)中创建索引 gist_trgm_ops 时无法使用 siglen 参数

arrays - Postgres 将数组转换为自定义类型

postgresql - pg_restore : [tar archiver] could not find header for file "toc.dat" in tar archive :- [PostgreSQL-11] pg admin 4

mysql - 存储过程不返回记录