[pgsql-jp: 35725] Re: RETURNの戻り値をレコードセットと一緒に受取る

abe_i abe_i @ yamagishi.or.jp
2005年 7月 13日 (水) 02:22:55 JST


阿部です。

関数の作り方、使い方両方に間違いがあります。

詳しいことはマニュアルのPL/pgSQL - SQL手続き言語の部分を読んでください。

「SELECT問い合わせのからの結果はEXECUTEによって捨てられます。
また、SELECT INTOはEXECUTEでは現在サポートされません」

というこ様なことが書いてあります、なので

関数は

create or replace function get_nmaster_rcount(text) returns integer as '
declare
jouken alias for $1;
sql text;
REC RECORD;

begin
sql:=''select count(ninusi_code) as n_count from ninusi_mastert where '' || jouken;

FOR REC IN EXECUTE sql LOOP
END LOOP;

RETURN REC.n_count;
end;
' language plpgsql;

関数の実行は

select get_nmaster_rcount($where_jouken)

のようになると思います。

関数を作ったとき、関数が正しいか単独で動かして検証していますか?

関数は正しく動くか確認後にプログラムに組み込むようにしましょう。


-- 
阿部 <abe_i @ yamagishi.or.jp>




pgsql-jp メーリングリストの案内