SELECTリストのセットリターン関数(SRF)について
SELECTリストでSet Returning Function(SRF)を使用する場合とFROM句でSRFを使用する場合で、動作に違いがあるのはなぜですか? たとえば、2つの行を返す単純なSRFの場合: CREATE OR REPLACE FUNCTION gen_series(out integer, out int) RETURNS SETOF record AS $$ SELECT 1,1 UNION SELECT 2,2; $$ LANGUAGE SQL; SELECT gen_series(); それぞれがレコードを含む2つの単一列の行を返します。 => gen_series ------------ (1,1) (2,2) (2 rows) 一方SELECT * FROM gen_series();、レコードが展開された2つの行を返します。 => column1 | column2 ---------+--------- 1 | 1 2 | 2 …