2012-12-05 118 views
0

我得到一個錯誤不正確的語法

附近有語法錯誤=

在執行此過程:

DECLARE @I_BRANCH_ID VARCHAR(MAX) 

EXEC GETBALANCE CASE WHEN @I_BRANCH_ID ='' THEN 0 ELSE @I_BRANCH_ID END 
+0

請關閉你的大寫鎖定。 – hims056

+0

請停止大喊! –

+0

你已經問過這個問題 - [如何在執行存儲過程的參數中使用大小寫?](http://stackoverflow.com/questions/13795625/how-to-use-case-in-arguments-of-executing - 存儲過程) - 所以請刪除此副本。 – Bridge

回答

1

你不能把有條件的語法轉換爲像這樣的EXECUTE語句。

相反,嘗試:

IF (@I_BRANCH_ID = '') 
    SET @I_BRANCH_ID = '0' 

EXECUTE GetBalance @I_BRANCH_ID 

編輯:

隨着越來越多的參數,可以您可以簡化到:

SELECT @param1 = CASE WHEN @param1 = '' THEN '0' ELSE @param1 END, 
     @param2 = CASE WHEN @param2 = '' THEN '0' ELSE @param2 END, 
     @param3 = CASE WHEN @param3 = '' THEN '0' ELSE @param3 END 
     ... etc etc 
+0

實際上我沒有任何關於我只使用THORUGH情況陳述的假設我不能使用 – user1831355

0

嘗試從EXECUTE語句單獨設置變量的值:

DECLARE @I_BRANCH_ID VARCHAR(MAX) 

SET @I_BRANCH_ID = CASE WHEN @I_BRANCH_ID = '' THEN 0 ELSE @I_BRANCH_ID END 

EXEC GETBALANCE @I_BRANCH_ID 
0
DECLARE @I_BRANCH_ID VARCHAR(MAX) 
SET @I_BRANCH_ID = CASE WHEN @I_BRANCH_ID = '' THEN '0' ELSE @I_BRANCH_ID END 
EXEC GETBALANCE @I_BRANCH_ID