次のストアド プロシージャを実行しようとすると、エラーが返されます。
EXECUTE p_someProc
--list of vars
CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END,
--more vars
他にも CASE 関数が含まれていますが、最初の CASE を指すエラーが 1 つだけ吐き出されます。
同じ式が PRINT 関数内で実行されると、期待される結果が返されます。
declare @var1 bit set @var1 = 1
declare @var2 bit set @var2 = 1
print(CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var1=1 THEN 2
WHEN @var2=1 THEN 1 END)
出力は「3」です
どういうわけかCASE関数を誤用していると思います。誰かが回避策またはそれを修正する方法を考えることができますか?
前もって感謝します。
――スタン