我有一个用于 select 语句的基本存储过程。 select 语句本身可以工作并显示数据输出,但是当我尝试从存储过程调用它时,它显示“CALL Query 在 107 毫秒内成功返回”,但没有数据输出。我的存储过程中是否缺少某些内容? (我还将 AWS 上的数据库与基本层连接,不确定这是否有影响。除了 select 之外,所有其他 CRUD 操作都可以工作。)
CREATE PROCEDURE
experiment1()
LANGUAGE SQL
AS $$
SELECT * FROM assignment
$$
最佳答案
Postgres 过程不返回任何内容。您可以使用带有 return query
语法的函数来代替。这需要枚举查询返回的列。假设您的表有两列,id
和 val
,那就是:
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/