在 MySql 中
UPDATE `inventoryentry` SET `Status` = 1 WHERE `InventoryID`=92 AND `ItemID`=28;
它仅成功更新了一行,其中 inventoryID = 92 和 itemID=28 ,显示以下消息。
1 row(s) affected
当我把它放在存储过程中时,如下
CREATE DEFINER=`root`@`localhost` PROCEDURE `Sample`(IN itemId INT, IN itemQnty
DOUBLE, IN invID INT)
BEGIN
DECLARE crntQnty DOUBLE;
DECLARE nwQnty DOUBLE;
SET crntQnty=(SELECT `QuantityOnHand` FROM `item` WHERE id=itemId);
SET nwQnty=itemQnty+crntQnty;
UPDATE `item` SET `QuantityOnHand`=nwQnty WHERE `Id`=itemId;
UPDATE `inventoryentry` SET `Status` = 1 WHERE `InventoryID`=invID AND
`ItemID`=itemId;
END$$
调用存储过程
CALL Sample(28,10,92)
它根据InventoryID (即92)更新inventoryentry中的所有状态= 1,忽略ItemID,而不是只更新一行。显示以下消息!
5 row(s) affected
为什么存储过程在更新语句中忽略 itemID?或者为什么存储过程更新不止一次?但是没有存储过程它工作正常。