複数の行を返す postgresql 関数を作成しようとしています。コードは次のようになります。
CREATE OR REPLACE FUNCTION getallwidgets()
RETURNS SETOF widgets AS
$BODY$
SELECT * FROM widgets;
$BODY$
LANGUAGE sql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION getallwidgets()
OWNER TO postgres;
pgadmin3 を使用してこのコードをテストすると、各フィールドがカンマで区切られた 1 列のデータが取得されます。私が疑問に思っているのは、リストされた個々のフィールドを取得する方法です。これにより、ストアド プロシージャを呼び出すコードでデータセットをループしているときに、各フィールドを列名で参照できます。
ありがとう。
編集1
pgadmin3 でスクリプトを実行すると、出力ペインに 1 つの列に次のデータが表示されます。
(1, "widget1","this is my description", 1)
(2, "another widget","description2", 3)
つまり、上記のデータが 1 つの列に表示された 2 つの行を取得します。私は期待していました:
id name description user_id
1 "widget1" "this is my description" 1
2 "another widget" "description2" 3