2013-01-12 73 views
0

這裏是myqsl程序:MySQL的更新中的所有行,而不是1

CREATE DEFINER = `root`@`%` PROCEDURE `NewProc`(IN comp_id VARCHAR(40)) 
    BEGIN 
    ... 
    UPDATE tbl_complaint SET DIDM_Docket_No = '2013-12-12' WHERE Comp_ID = comp_id; 
    END; 

這是它的外觀時,我調用過程:

call gen_docketno('{74651651-9D76-C973-175A-97B9B78608A5}') 

是不是因爲括號並且在程序無法正確更新的參數的值中輸入?因爲當我在SQL查詢中運行這個工作,但沒有在存儲過程中。

UPDATE tbl_complaint SET DIDM_Docket_No = '2013-12-12' WHERE Comp_ID = '{BF16E293-6CD2-8BC3-91B1-CF5AC70A090B}'; 

有人可以請告訴我如何解決這個問題?

+1

'WHERE Comp_ID = comp_id' =全部更新! – Popnoodles

+0

歡迎來到Stack Over Flow! ':D' –

回答

4

重命名您的參數comp_id。它與您的列名衝突,導致它更新所有記錄,

CREATE PROCEDURE `NewProc`(IN _comp_id VARCHAR(40)) 
BEGIN 
... 
    UPDATE tbl_complaint 
    SET DIDM_Docket_No = '2013-12-12' 
    WHERE Comp_ID = _comp_id; 
END; 
+0

它的工作原理!非常感謝! JW。和@ popnoodles – Yek

+0

不客氣':D' –

相關問題