ストアドプロシージャでCASE
を使用します。コードに構文エラーがあります:
select
case @Temp
when 1 then (@selectoneCount=@selectoneCount+1)
when 2 then (@selectoneCount=@selectoneCount+1)
end
実行すると、次のようになります:
「=」付近の構文が正しくありません。
この行で:
@selectoneCount = @selectoneCount + 1
ほぼ等しい。
実際、別のspから@tempに戻り値を取得し、@ temp = 1の場合、@ SelectoneCountのカウントを1ずつ増やしたい、などです。正しい構文を教えてください。
CASE
は、値を返す-コードブロック全体を実行しないための単なる「スイッチ」です。
コードを次のように変更する必要があります。
SELECT
@selectoneCount = CASE @Temp
WHEN 1 THEN @selectoneCount + 1
WHEN 2 THEN @selectoneCount + 1
END
@temp
がこれらの値(1または2)のどれにも設定されていない場合、NULL
が返されます。
これは選択ステートメントであるため、ケースの各ブランチは何かを返す必要があります。アクションを実行する場合は、ifを使用します。
select
@selectoneCount = case @Temp
when 1 then (@selectoneCount+1)
when 2 then (@selectoneCount+1)
end
select @selectoneCount
実際、私は別のspから@tempに戻り値を取得し、それから@temp = 1になり、@ SelectoneCountのカウントを1ずつ増やしていきます。正しい構文を教えてください。
どうしたの:
IF @Temp = 1 --Or @Temp = 2 also?
BEGIN
SET @SelectoneCount = @SelectoneCount + 1
END
(これは手続き型コードであることを嫌いますが、通常はSQLを使用する最良の方法ではありません)