在存储过程 postgresql 中返回表



我想返回整个表,存储过程不起作用

我的代码是:

CREATE OR REPLACE PROCEDURE public.test()
RETURN TABLE (
id   numeric
, test varchar
) AS  -- Results  -- remove this
$func$
BEGIN
RETURN QUERY
SELECT * 
FROM public.test
END
$func$ LANGUAGE plpgsql;

但它不起作用。

存储过程并不意味着返回任何内容,请使用函数。而且你也不需要PL/pgSQL:

create or replace FUNCTION public.test()
returns TABLE (id   numeric, test varchar) 
AS
$func$
SELECT * 
FROM public.test;
$func$ 
LANGUAGE sql;

返回一个表的所有列时,还可以使用returns setof

create or replace FUNCTION public.test()
returns setof public.test
AS
$func$
SELECT * 
FROM public.test;
$func$ 
LANGUAGE sql;

然后像使用桌子一样使用它:

select *
from test();

最新更新