[pgsql-jp: 28670] カーソルを複数使う場合(カーソルのネスト?)について
nitta
nittam @ isao.co.jp
2003年 1月 14日 (火) 15:35:16 JST
新田と申します。
ランキングシステムの改造をしています。
Postgresは詳しくないので初歩的な質問だとは思うのですが。
以下教えてください。
・プロシージャ1:ユーザIDより、スコア,順位等を「カーソル1」に格納
・プロシージャ2:プロシージャ1をコールして「カーソル1」の内容を返す
上記のようなプロシージャがすでにあり、
プロシージャ2で返却すべき項目が追加になりました。
そこで
・プロシージャ2:「カーソル1」と名前を「カーソル2」に格納
(プロシージャ1は他からも共通で利用されており、また追加項目は
別テーブルを参照するためプロシージャ2を改造)
(旧)
curRet REFCURSOR := ''r1'';
SELECT INTO curRet プロシージャ1(ユーザID);
return curRet;
↓
(新)
curRet REFCURSOR := ''r2'';
OPEN curRet FOR
SELECT プロシージャ1(ユーザID), 名前
FROM テーブル2 WHERE UID = ユーザID;
return curRet;
のように改造しようとしたのですが、プロシージャ1のエラー復帰の箇所
(旧)
OPEN curRet FOR SELECT nRet AS RTN_CODE;
のところをどう修正すべきかで悩んでしまいました。
Pg::connectdbを使用してのプロシージャ実行結果は
上記改造後にはカーソル1とカーソル2のfetch結果を参照
すなわち
if ( $result->resultStatus != PGRES_TUPLES_OK or $result2->resultStatus
!= PGRES_TUPLES_OK ) {
エラー
}
とすべきなのだと思うのですが。
実はこのあたりがよくわかっていません。
どうぞよろしくご指導お願いいたします。
pgsql-jp メーリングリストの案内