我正在尝试将过程体内声明的变量与输入参数进行比较,但结果始终为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与参数不同。永远不会执行更新操作
答案 0 :(得分:0)
避免将变量和参数命名为表的列。
尝试:
/* 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 */
请参阅: