- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ELSE先の条件に引っかからない)
SQLServer2000のストアドプロシージャの条件処理で問題が発生しています
このQ&Aのポイント
- SQLServer2000のストアドプロシージャで、Select結果によって違う値を返す処理を行っていますが、片方の条件は正しく処理されず、もう片方は正常に処理されます。
- ROWCOUNTが0の場合にはErrorCodeが1となるように設定していますが、ROWCOUNTが20以上の場合にはErrorCodeが2とならず、どちらの条件が拾われるか理解できません。
- 構文チェックでは正常な状態であるため、ELSEの書き方が問題なのか不明です。解決方法をご存知の方、教えてください!
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「IF @@ROWCOUNT = 0」というステートメントを実行した時点で@@ROWCOUNTには0が入ります。 ですから「ELSE IF @@ROWCOUNT >=20」部分には入りません。 これを解決するには SET @intRowCount = @@ROWCOUNT IF @intRowCount = 0 BEGIN PRINT 'データ無し' SET @ErrorCode = 1 RETURN END ELSE IF @intRowCount >= 20 BEGIN PRINT '20件以上' SET @ErrorCode = 2 RETURN END とすれば大丈夫です。
お礼
早速の回答ありがとうございます。 IF @@ROWCOUNT=0でダメなんですね。 普通のIF~ELSE文と違うなぁとは思いましたが、 条件文に使用しただけで@@ROWCOUNTが変わるとは・・・。 初心者イジメとしか思えませんね(苦笑)。 おかげさまでできました。 ErrorCode=2が帰って来た瞬間、思わず「ワォ」と口走るくらいありがたかったです。 また機会がありましたら、教えてください(ペコリ)。