sql - 存储过程没有数据输出(Postgresql)

标签 sql postgresql select stored-procedures sql-function

我有一个用于 select 语句的基本存储过程。 select 语句本身可以工作并显示数据输出,但是当我尝试从存储过程调用它时,它显示“CALL Query 在 107 毫秒内成功返回”,但没有数据输出。我的存储过程中是否缺少某些内容? (我还将 AWS 上的数据库与基本层连接,不确定这是否有影响。除了 select 之外,所有其他 CRUD 操作都可以工作。)

CREATE PROCEDURE 
    experiment1()
LANGUAGE SQL
AS $$
    SELECT * FROM assignment    
$$

最佳答案

Postgres 过程不返回任何内容。您可以使用带有 return query 语法的函数来代替。这需要枚举查询返回的列。假设您的表有两列,idval,那就是:

create function experiment() 
returns table (id int, val text)
as $$
begin
    return query select * from assignment;
end;
$$ language plpgsql;

然后您可以像这样调用这个设置返回函数:

select * from experiment();

<强> Demo on DB Fiddle :

create table assignment (id int, val text);
insert into assignment values(1, 'foo'), (2, 'bar');
-- 2 rows affected

create function experiment() 
returns table (id int, val text)
as $$
begin
    return query select * from assignment;
end;
$$ language plpgsql;

select * from experiment();
id | val
-: | :--
 1 | foo
 2 | bar

关于sql - 存储过程没有数据输出(Postgresql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62565235/

相关文章:

sql - 日期减法错误

sql - 像列 2 一样在列 1 上内连接两个表,后跟非字母表

mysql - 如何从2个表中获取所有数据

mysql - 使用第三个表的条件从另一个表插入到一个表中

mysql - 如何使此查询以相反的顺序从另一个表中获取一些数据

php - 想要使用多个术语时查询中 LIKE 子句的顺序

mysql - MySQL 的 SQL 特定编程语言名称是什么?

ruby - Rails 3 - ActiveRecord,什么更有效率(更新与计数)?

postgresql - 如何使用 Play 框架中的演变在 PostgreSQL 中创建函数?

c# - 独立于 DBMS 的查询