dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。
SQLServer7.0です。

ストアドプロシージャでカーソルを使用し、オープンしたカーソルの件数を調べたいのですがうまくいきません。

Declare curs2 cursor for
Select [項目名]
From [テーブル名]
Where [検索条件]

Open curs2
Print @@CURSOR_ROWS

この「@@CURSOR_ROWS」変数でヒット件数を取得できるように参考書では書いてあるのですが、実際Printしてみると、カーソルをオープンする前だと 0 で、オープンした後だと-1 です。

特にエラーだとか、対象データがないというわけではありません。実際その後ヒットした件数分行う処理は正常に出来ています。

ただ、どうしても処理を行う前に件数を知りたいのです。カーソルの変数だけでは取れないとなると セレクトしたカーソルと全く同じセレクトを実行して@@ROWCOUTで取るしかないかなって思ってるのですが・・・。どうも建設的ではないなって思ってます。

カーソルの件数を取得するにはどうしたらよいのでしょうか?

A 回答 (1件)

一回


Select count([項目名])
From [テーブル名]
Where [検索条件]

とやって、数を取り出してから カーソルのほうを
やったらどうでしょうか?


あと
参考URLでは
SELECT @@CURSOR_ROWS
で取得しているみたいですが・・・。

参考にならなかったら失礼。

参考URL:http://www.horikawa.ne.jp/msde/gihyo/sql07/sql07 …
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
参考URLなどを調べさせていただいて、どうやら@@CURSOR_ROWS で正確な値が取れるのは「同期カーソル」の状態でないといけないことがわかりました(意味あんまりわかってないですが``r(^^;)ぽりぽり)

今回はアドバイスどおり最初にセレクトして件数を取り出してから以降の処理を行いたいと思います。

お礼日時:2003/05/08 12:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す