[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 メーリングリストの案内