如何将参数值输入与存储过程mysql中的变量进行比较?
How to compare an argument value input with a variable in stored procedure mysql?
我正在尝试将过程主体中声明的变量与输入参数进行比较,但结果始终为假。
这是我的代码:
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 table 中,特定用户的值 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 */
参见:
我正在尝试将过程主体中声明的变量与输入参数进行比较,但结果始终为假。
这是我的代码:
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 table 中,特定用户的值 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 */
参见: