[pgsql-jp: 28115] Re: PostgreSQL7.3について疑問
Tatsuo Ishii
t-ishii @ sra.co.jp
2002年 11月 28日 (木) 23:09:59 JST
石井です.
> > 3. 新機能の行を返す関数についてレジュメのサンプルでは
> > Language SQLとデモでC言語ということでしたが、plpgsqlは
> > 使用可能でしょうか。
もちろん可能ですよ.
> 私もこれについて非常に気になっております。現在7.3b2で
> 色々と試しているのですが、カーソルを返す従来の方法でしか
> 複数行を返すファンクションが作れていません。
>
> この場合だと、select * from hoge()のような記述が出来ない
> (begin 〜 endで囲んでカーソルを取得する必要がある)ので、
> ちょっと使い勝手が悪いのが難点です。
>
> SQL関数で済む程度であれば問題ないですし、細かく機能分割を
> していけば良いことではあるのですが、微妙な手間が気になる
> ときもあったりします。
>
> PL/pgSQLもSQL関数同様にreturns setof を使って、select文の
> from句にファンクションを指定できると非常に嬉しいのですが、
> 何か上手い方法はありませんでしょうか。
サンプルを示します.
CREATE OR REPLACE FUNCTION myfunc() RETURNS SETOF RECORD AS '
DECLARE
myrec RECORD;
BEGIN
SELECT 1::INTEGER,''first''::TEXT INTO myrec;
RETURN NEXT myrec;
SELECT 2::INTEGER,''second''::TEXT INTO myrec;
RETURN NEXT myrec;
RETURN;
END;
' language 'plpgsql';
CREATE FUNCTION
SELECT * FROM myfunc() AS t1(i INTEGER, t TEXT);
i | t
---+--------
1 | first
2 | second
(2 rows)
詳細はドキュメントの,
plpgsql-control-structures.html
をどうぞ.
> # パラメータ付ビュー、という形で使えるので、7.3の行を返す
> 関数、というのは凄く重宝しています。
「パラメータ付ビュー」とはなんでしょうか?
--
Tatsuo Ishii
pgsql-jp メーリングリストの案内