2015-10-29 18 views
0

我想比较过程体内声明的变量与输入参数,但结果始终为false。如何将参数值输入与存储过程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表,特定用户的价值REG_ID是从参数不同。更新操作从未执行

+0

reg_id是一个参数和一列。因此,请重新考虑 – Drew

+0

尝试检查v_mi_regId值并首先声明v_mi_regId。 –

回答

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 */ 

SQL Fiddle demo

参见:

相关问题