如何在 postgresql 的函数中获取 select 的结果?

how do I get the result of a select within a function in postgresql?

我想获得值为 1 的 table,但此查询 returns 0 行。为什么会这样?

CREATE OR REPLACE FUNCTION test_6()
 RETURNS TABLE
            (
                r int
            )
LANGUAGE plpgsql
AS $function$
BEGIN
   execute 'SELECT 1 as r';
end;
$function$;

select test_6() 

您需要添加RETURN QUERY

CREATE OR REPLACE FUNCTION test_6()
 RETURNS TABLE
            (
                r int
            )
LANGUAGE plpgsql
AS $function$
BEGIN
   RETURN QUERY
    execute 'SELECT 1 as r';
end;
$function$;

此外,正如下面评论中所建议的那样,您应该像 table select * from test_6()

一样使用该函数

你可以只使用

RETURN QUERY
SELECT 1 as r;