mysql存储过程更新所有行而不是1

时间:2013-01-12 12:43:29

标签: mysql sql stored-procedures

这是myqsl程序:

    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 个答案:

答案 0 :(得分: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;
相关问题