• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ELSE先の条件に引っかからない)

SQLServer2000のストアドプロシージャの条件処理で問題が発生しています

このQ&Aのポイント
  • SQLServer2000のストアドプロシージャで、Select結果によって違う値を返す処理を行っていますが、片方の条件は正しく処理されず、もう片方は正常に処理されます。
  • ROWCOUNTが0の場合にはErrorCodeが1となるように設定していますが、ROWCOUNTが20以上の場合にはErrorCodeが2とならず、どちらの条件が拾われるか理解できません。
  • 構文チェックでは正常な状態であるため、ELSEの書き方が問題なのか不明です。解決方法をご存知の方、教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • kumagoro-
  • ベストアンサー率57% (36/63)
回答No.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 とすれば大丈夫です。

lovelypooh
質問者

お礼

早速の回答ありがとうございます。 IF @@ROWCOUNT=0でダメなんですね。 普通のIF~ELSE文と違うなぁとは思いましたが、 条件文に使用しただけで@@ROWCOUNTが変わるとは・・・。 初心者イジメとしか思えませんね(苦笑)。 おかげさまでできました。 ErrorCode=2が帰って来た瞬間、思わず「ワォ」と口走るくらいありがたかったです。 また機会がありましたら、教えてください(ペコリ)。