如何获取每个返回的结果表单函数返回表?

时间:2016-06-28 14:31:14

标签: postgresql

这里我有一个名为' returns_table'它返回多行记录。在另一种方法中,我试图单独访问所有记录并连接它们。但收到错误说 - '为单个变量返回多行。这是我的代码:

for _i in (SELECT * from returns_table()) loop              
     _msg := _i;
end loop;

是否有任何替代方法可以从函数返回表中访问每个单独的行?谢谢!

1 个答案:

答案 0 :(得分:0)

您的变量i必须声明为RECORD。见例:

DO $$
    DECLARE i       RECORD;
    DECLARE data1   INTEGER;
    DECLARE data2   INTEGER;
    DECLARE data3   INTEGER;
BEGIN
    FOR i IN (SELECT * FROM (VALUES (1,2,3),(4,5,6),(7,8,9)) AS t)
    LOOP
        data1   := i.column1;
        data2   := i.column2;
        data3   := i.column3;
        RAISE NOTICE '%, %, %', data1, data2, data3;
    END LOOP;
END$$;

将提供以下输出:

NOTICE:  1, 2, 3
NOTICE:  4, 5, 6
NOTICE:  7, 8, 9

Query returned successfully with no result in 11 ms.