这里我有一个名为' returns_table'它返回多行记录。在另一种方法中,我试图单独访问所有记录并连接它们。但收到错误说 - '为单个变量返回多行。这是我的代码:
for _i in (SELECT * from returns_table()) loop
_msg := _i;
end loop;
是否有任何替代方法可以从函数返回表中访问每个单独的行?谢谢!
答案 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.