2013-01-17 75 views
0

所以現在我有一個簡單的SQL存儲過程,我可以調用它來更新我的數據庫中的某個表。在該存儲過程,我有一個如果條件語句:無法更新表

IF 1 > 0 THEN 
     UPDATE TABLE_A 
     SET COLUMN_1 =299999 
     WHERE COLUMN_2 ='2014-01-03' and COLUMN_3=0; 

我敢肯定的更新條款有沒有問題,因爲當我單獨運行它,它更新表罰款。我可以看到表中正在更新的值。

但是,當我把它放在IF聲明(如上面的代碼)之後時,更新失敗(返回沒有受影響的行)。

我敢肯定,IF語句也是正確的(現在我把它作爲1> 0來測試)。

如果我在IF之後插入語句,它也可以正常工作。一個新行正在插入表中。這太奇怪了。任何幫助?

+0

'mysql'和'tsqlt'? – Kermit

+0

什麼'SELECT * FROM TABLE_A WHERE COLUMN_2 ='2014-01-03'和COLUMN_3 = 0;'return? – Leeish

+0

嗨,它返回我正確的行 – sicccccc

回答

3

如果它是T-SQL嘗試使用BEGIN聲明,而不是再

IF 1 > 0 
BEGIN 
UPDATE TABLE_A 
SET COLUMN_1 =299999 
WHERE COLUMN_2 ='2014-01-03' and COLUMN_3=0 
END 
+0

Thx傢伙,我找出問題所在。我無意中將其中一個輸入參數命名爲與我的列名相同的名稱,所以我認爲它搞砸了更新部分。 – sicccccc

0

試試這個

 UPDATE TABLE_A 
    SET COLUMN_1 =299999 
    WHERE COLUMN_2 ='2014-01-03' 
    AND COLUMN_3=0 
    AND 1 > 0 ;    <------- put it in where clause 
+0

好吧,thx爲您的答案,但我真的需要IF語句,因爲我需要做其他事情之後使用ELSEIF和ELSE – sicccccc