存储过程没有数据输出(Postgresql)
No data output from stored procedure (Postgresql)
我有一个 select 语句的基本存储过程。 select 语句本身有效并向我显示数据输出,但是当我尝试从存储过程调用它时,它显示 'CALL Query returned successfully in 107 msec',但没有数据输出。我的存储过程中是否遗漏了什么?
(我还将 AWS 上的数据库与基本层连接起来,不确定这是否会有所不同。除 select 外,其他所有 CRUD 操作均有效。)
CREATE PROCEDURE
experiment1()
LANGUAGE SQL
AS $$
SELECT * FROM assignment
$$
Postgres 过程不return任何东西。您可以改用函数,语法为 return query
。这需要枚举查询 returns 的列。假设您的 table 有两列,id
和 val
,那就是:
create function experiment()
returns table (id int, val text)
as $$
begin
return query select * from assignment;
end;
$$ language plpgsql;
然后您可以像这样调用此 set-returning 函数:
select * from experiment();
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
我有一个 select 语句的基本存储过程。 select 语句本身有效并向我显示数据输出,但是当我尝试从存储过程调用它时,它显示 'CALL Query returned successfully in 107 msec',但没有数据输出。我的存储过程中是否遗漏了什么? (我还将 AWS 上的数据库与基本层连接起来,不确定这是否会有所不同。除 select 外,其他所有 CRUD 操作均有效。)
CREATE PROCEDURE
experiment1()
LANGUAGE SQL
AS $$
SELECT * FROM assignment
$$
Postgres 过程不return任何东西。您可以改用函数,语法为 return query
。这需要枚举查询 returns 的列。假设您的 table 有两列,id
和 val
,那就是:
create function experiment()
returns table (id int, val text)
as $$
begin
return query select * from assignment;
end;
$$ language plpgsql;
然后您可以像这样调用此 set-returning 函数:
select * from experiment();
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