0

ストアド プロシージャ

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$$

このストアド プロシージャには、2 つの更新ステートメントがあります。IF の最初の更新が正常に実行され、次に 2 番目の更新が実行されます。どのような変更を加える必要がありますか?

4

2 に答える 2

2

最初の後に、UPDATE影響を受けた行の数を確認できますROW_COUNT()

ROW_COUNT()が必要な数の更新を返す場合(おそらく > 0)、 second のみを起動しますUPDATE

影響を受けた行数をチェックすることでUPDATE、2 番目を囲むことができます。IF - END IF

于 2012-05-31T11:43:47.837 に答える
0

SELECT ROW_COUNT();影響を受けた行があるかどうかを判断するために使用します。カウントが 0 より大きいか、予想される行数と等しい場合、更新は成功しています。

于 2012-05-31T11:43:23.993 に答える