DELIMITER //
CREATE OR REPLACE PROCEDURE GET_USER_PNTS(USER_ID INT , PNTS INT, QNT INT)
BEGIN
DECLARE x INT DEFAULT 1;
DECLARE TEMP_GIFT_ID INT;
UPDATE USR_PNT_SUMM SET USD_PNTS = USD_PNTS + PNTS WHERE USER_ID = 1;
COMMIT;
END //
DELIMITER ;
上面的存储过程更新了两行 - 一行用于user_id = 1,另一行用于用户ID 0.我不明白为什么!
这就是我调用存储过程的方法 - CALL GET_USER_PNTS(1,1,1)
请告诉我为什么user_id 0也会更新。
P.S 1.我正在使用MariaDB。 2. UserID 0是我在表格中手动添加的内容。在实践中,不会有任何0 user_id。但即使这样,该行也不应该更新。
答案 0 :(得分:1)
请重命名您的参数:
CREATE OR REPLACE PROCEDURE GET_USER_PNTS(L_USER_ID INT , L_PNTS INT, L_QNT INT)
BEGIN
DECLARE x INT DEFAULT 1;
DECLARE TEMP_GIFT_ID INT;
UPDATE USR_PNT_SUMM SET USD_PNTS = USD_PNTS + L_PNTS WHERE USER_ID = L_USER_ID;
COMMIT;
END //
可能USER_ID = USER_ID
被视为真实。