[Oracle]カーソルの行数が知りたい

[Oracle]カーソルの行数が知りたい A500_CUR というカーソルを FOR A500_REC IN A500_CUR LOOP みたいな形で回すのですが A500_CUR%ROWCOUNT みたいな形で、何行あるか知りたいのです。 For文でカウントすれば一発ですが 簡単な方法はないでしょうか よろしくお願いいたします。

Oracle17,026閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

10g以降は定かではありませんが、9iまではそういったプロパティは 無かったように思います。 COUNT(*)で件数をカウントするか 全件Fetchし終わった時点の%ROWCOUNTを参照するか のどちらかだと思います。 Forループの処理の中で行数が必要ならば FETCHする直前に IF A500_CUR%ROWCOUNT = 0 THEN SELECT COUNT(*) INTO ~ FROM ~ END IF; と記述しておきます。このやり方だと カーソルOPEN時のCASHから件数を取得するので 件数取得の為にテーブルを再検索することがない ので処理効率にも大きく影響を与えません。