質問

エラーは、次のストアドプロシージャを実行しようとするときに戻ります。

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機能があり、含まれています。

同じ式が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機能を悪用していていることを前提としています。誰もがこの問題を回避するか、それを修正する方法を考えるだろうか?

事前に感謝します。

- スタン

役に立ちましたか?

解決

JeremyMcGeeはあなたではなく幹部にケースを渡そうよりも、割り当てを実行する必要がある上に暗示

として、より多くのような何かをしようと、次の

Declare @varx int
select @varx = CASE WHEN @var1=1 AND @var2=1 THEN 3 
     WHEN @var2=1 THEN 2 
     WHEN @var1=1 THEN 1 END
EXECUTE p_someProc @varx

他のヒント

ハードはより多くのコードなしで指示します。 @のVAR1と@のVAR2は、おそらく、宣言されていることを確認してください?

あなたも、何かにCASEの結果を代入していることを確認します!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top