sql—存储过程没有数据输出(postgresql)

oxf4rvwz  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(634)

我有一个select语句的基本存储过程。select语句本身可以工作并向我显示数据输出,但是当我尝试从存储过程调用它时,它会说“call query在107毫秒内成功返回”,但没有数据输出。我的存储过程中是否缺少某些内容(我还将aws上的一个数据库与基本层连接起来,不确定这是否有区别。除select外,其他所有积垢操作都有效。)

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

btxsgosb1#

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();

db小提琴演示:

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

相关问题