0

複数の行を返す 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
4

1 に答える 1

0

出力から列名を参照できます (わかっている場合)。たとえば、ウィジェット テーブルに col1、col2、col3 という名前の列がある場合、次のように発行できます。

SELECT col1, col2, col3
FROM getallwidgets();

それはあなたが求めているものですか?

于 2013-07-05T14:55:49.723 に答える