[pgsql-jp: 31006] Re: 複合型を使ったPL/pgSQL 関数について

Jun Kitamura kitamura @ zoozee.jp
2003年 9月 9日 (火) 12:44:31 JST


北村@取り急ぎ です。

> >CREATE OR REPLACE FUNCTION fnc_2()
> >(snip)
> > FOR emp_record IN SELECT * FROM EMP LOOP
> >  -- EMP の1行を fnc_1 に渡して結果を result に。
> >  select fnc_1(ee) into result
> >   from EMP ee where ee.col1 = emp_record.col1;
> > END LOOP;
> >(以下略)
> >
> >としてみてはどうでしょう?
> 
> しかし、この方法だと同じレコードを2度読み込む事になりませんか?
> その場合、レコード件数次第では、レスポンスに影響もあるのでは?

2度読み込むことになりますよ。レスポンスにも影響すると思いま
す。
ですので、[pgsql-jp: 30944]のメールで、全レコードを fnc_1(EMP) 
に通したいのであれば、
select fnc_1(ee) from EMP ee;
で済み、fnc_2() の存在意義が解らない、と書いたのです。
全文が無いので、判断できる範囲でしか言及できません。

> 既存のオラクル版プロシージャを書き換えております。
> その中で、「EMP%ROWTYPE」って感じで引数の受け渡し多様しており、
> その部分を、どう書き換えてよいものかと思った次第です。
> またメインプロシージャから、複数のサブプロシージャに
> レコードを渡しているので、よりレスポンスが気になっております。

なるほど。でしたら、オラクル版プロシージャでやっていた処理や
テーブルスキーマを載せて、PL/pgSQL でこう書いたけど、書き方
が解らない、という具合の質問でないと、「何がしたいのか解らな
いので答えようがない」と思われてしまいますよ。

でわ。





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