DELIMITER $$USE `pos_dbo`$$DROP PROCEDURE IF EXISTS `POS_CheckUserName`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `CheckUserName`(OUT checkResult INT,userName VARCHAR(20),pass VARCHAR(20))
BEGIN
         DECLARE ddt VARCHAR(20);
         SET ddt= NOW();
 IF EXISTS(SELECT * FROM pos_users WHERE username=userName AND pass=pass) THEN
         BEGIN
     UPDATE pos_users SET lasttime=ddt WHERE username=userName AND pass=pass;
     SET checkResult=1;
     SELECT checkResult;
         END;
 ELSEIF EXISTS(SELECT * FROM pos_users WHERE username=userName) THEN
      SET checkResult=2;
      SELECT checkResult;
 ELSE 
      SET checkResult=0;
      SELECT checkResult;
      
         END IF;
#return isNull(@checkResult,2)

IF checkResult=NULL THEN
   SET checkResult=2;
   SELECT checkResult;
END IF;
#ISNULL(checkResult,2);
 END$$DELIMITER ;不管我username 和pass传什么值  都返回的是1  请问怎么回事?请高手赐教!谢谢

解决方案 »

  1.   

    字段名与变量名重名,修改
    IF checkResult=NULL->IF checkResult is null
      

  2.   

    SELECT * FROM pos_users WHERE username=userName AND pass=pass这个相当于1=1你需要把定义的变量改名字 userName1 VARCHAR(20),pass1 VARCHAR(20)
      

  3.   

    主要是mysql定义不像sqlserver那样参数都有@开头 习惯就好 
      

  4.   

    WHERE username=userNameMYSQL根本没办法知道哪个是变量名,哪个是字段名。相信大部分人也无法区分。所以MYSQL就把它们都当做字段名处理。