2009-12-04 144 views
1

的錯誤是返回時,下面的存儲過程被試圖執行:SQL Server 2000的「附近有語法錯誤關鍵字‘案’」

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功能。任何人都可以想出解決方法或解決方法嗎?

在此先感謝。

- Stan

回答

1

至於JeremyMcGee暗示了上述需要執行,而不是試圖通過的情況下到exec的分配,嘗試更多的東西像下面

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 
+0

謝謝。使用CASE分配值可解決問題。 – Stan 2009-12-04 07:07:50

+0

np。很難習慣不能用於控制流的案例構造。 – cmsjr 2009-12-04 07:20:22

1

很難說,沒有更多的代碼。檢查@ var1和@ var2是否已被聲明,也許?

確保您將CASE的結果分配給某個東西!

相關問題