2016-06-28 8 views
0

ここでは、複数のレコード行を返す 'returns_table'という関数があります。別の方法では、すべてのレコードに個別にアクセスし、それらを連結しようとしています。しかし、 '1つの変数に対して複数の行が返されました。ここに私のコードです:返された結果フォームを返す関数はテーブルを返す?

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

テーブルを返す関数から個々の行にアクセスする方法はありますか?ありがとうございました!

+0

あなたがCONCATENATE、レコードとはどういう意味ですか? –

答えて

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. 
関連する問題