0

这是MySQL过程:

    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}';

有人可以告诉我如何解决这个问题吗?

4

1 回答 1

5

重命名你的参数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;
于 2013-01-12T12:46:23.047 回答