我试图将过程体内声明的变量与输入参数进行比较,但结果始终为 false。
这是我的代码:
create procedure UserLogin(email VARCHAR(64),
reg_id VARCHAR(355),
code_version VARCHAR(10))
SELECT REG_ID INTO v_mi_regId
from USUARIO
where ID_USUARIO = email;
IF reg_id != v_mi_regId THEN <-- always false
UPDATE USUARIO
SET REG_ID = reg_id
WHERE ID_USUARIO = email;
END IF;
END
在USUARIO表中,特定用户的REG_ID值与参数不同。更新操作从不执行
最佳答案
避免将变量和参数命名为表的列。
尝试:
/* CODE FOR DEMONSTRATION PURPOSES */
DELIMITER //
DROP PROCEDURE IF EXISTS `UserLogin`//
CREATE PROCEDURE `UserLogin`(
`p_email` VARCHAR(64),
`p_reg_id` VARCHAR(355),
`code_version` VARCHAR(10)
)
BEGIN
DECLARE `v _mi_regId` VARCHAR(355);
SELECT `REG_ID` INTO `v _mi_regId`
FROM `USUARIO`
WHERE `ID_USUARIO` = `p_email`;
IF `p_reg_id` != `v_mi_regId` THEN
UPDATE `USUARIO`
SET `REG_ID` = `p_reg_id`
WHERE `ID_USUARIO` = `p_email`;
END IF;
END//
DELIMITER ;
/* CODE FOR DEMONSTRATION PURPOSES */
参见:
关于mysql - 如何将输入的参数值与存储过程mysql中的变量进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406071/