- ベストアンサー
DBMS_SQL.EXECUTEの問合せ結果件数
DBMS_SQL.EXECUTE()で動的SQLを発行したとき、 問合せ結果の件数は、どのようにすれば取得できるでしょうか。 できればSELECT COUNT(*)は発行しないで行いたいです。 動的SQLを発行した際に、取得結果が0件もしくはNULLが帰ってきた場合に例外処理を行いたい為です。 どなたかご存知の方いらっしゃいましたら、 ご教示の程宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
select文をDBMS_SQL.EXECUTEで実行する場合、DBMS_SQL.FETCH_ROWSを実行しないと実行結果を取得できません。初回のDBMS_SQL.FETCH_ROWSはフェッチされた行数を返却するので、EXECUTE後の初回のFETCH_ROWS の戻り値が0の場合、データが無いというように判断できるのではないでしょうか? DML文をDBMS_SQL.EXECUTEで実行すると影響された件数がDBMS_SQL.EXECUTEの戻り値になります。 #SELECT文を発行するなら、私ならカーソル変数を使いますけど・・・。
お礼
返事が遅れまして申し訳ございません。 PL/SQLをはじめたばかりなので、まだカーソル変数など理解が及ばない点がありますが、ご回答を参考にもう少し処理を練り直してみたいと思います。 簡単ではありますが、ご回答ありがとうございました。