更新不适用于存储过程

时间:2016-09-30 10:43:05

标签: mysql stored-procedures

我有一个存储过程来将列(LiveStatus)更新为' N'在插入新的数据行并将其列(LiveStatus)设置为' Y'之前如果新值的DeviceID已经存在且其LiveSTatus为' Y'。

它会插入新值,但上一行livestatus的{​​{1}}仍为“{'”

存储过程:

DeviceID

1 个答案:

答案 0 :(得分:0)

这是你的代码:

declare Sno int; 

set Sno=(SELECT MAX(Sno) FROM posassignment WHERE DeviceID=DeviceID);    
update posassignment set LiveStatus ='N' where Sno=Sno;

update相当于:

update posassignment set LiveStatus = 'N' where Sno is not null;

也就是说,sno引用都不是参数。您对DeviceID

有同样的问题
CREATE DEFINER=`testmysql`@`%` PROCEDURE `PDADeviceAssign`(
    IN in_DeviceID varchar(50),
    IN in_EmpID varchar(50),
    . . .
)
BEGIN
    declare v_Sno int; 

    set v_Sno = (SELECT MAX(Sno)
                 FROM posassignment
                 WHERE DeviceID = in_DeviceID
                );  

    update posassignment
        set LiveStatus = 'N'
        where Sno = v_Sno;