mysql菜鸟。刚写存储过程练手。代码如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `CheckIsUserLogin`(UserName_INPUT varchar(20),UserPass_INPUT varchar(50))
begin
  DECLARE ID_Temp int;
     SET ID_Temp:=0;
     SELECT  ID_Temp=ID FROM `Users` WHERE UserName=UserName_INPUT AND UserPass=UserPass_INPUT;
     select IF(ID_Temp>0,1,0);
end;
CPU瞬间顶满不执行不报错后各种百度把SELECT语句改为:
SELECT  ID INTO ID_Temp FROM `Users` WHERE UserName=UserName_INPUT AND UserPass=UserPass_INPUT;
后出正确结果
但是概念比较模糊,不了解=,:=和select into的区别,百度无果,求助各位大侠指点迷津,谢谢~

解决方案 »

  1.   

    :=和select into的区别
    := 在procedure里面是可以用的 但是在function, trigger里面是不能用的 
    而且在执行procedure的时候会有打印相对于的变量值 一直执行的时间。
    select into 语句 procedure function trigger 等里面都是可以用的。=和 :=都是赋值语句  区别等高人来解答
      

  2.   

    :=:在SELECT语句中对变量赋值
    select @id:=id from tt在SP(trigger)中对变量赋值
    SET ID_Temp=0;
      

  3.   


    但是我这样写是报1064错误的。错误代码如下:
    begin  
      DECLARE ID_Temp int;
      SELECT ID_Temp=id FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT;
      select IF(ID_Temp>0,1,0);
    endMySQL 返回:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':=id FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT; s' at line 4
      

  4.   


    但是我这样写是报1064错误的。错误代码如下:
    begin 
      DECLARE ID_Temp int; 
      SELECT ID_Temp:=id FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT; 
      select IF(ID_Temp>0,1,0);
    endMySQL 返回:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':=id FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT; s' at line 4
      

  5.   

    DELIMITER $$
    CREATE PROCEDURE `CheckIsUserLogin`(UserName_INPUT VARCHAR(20),UserPass_INPUT VARCHAR(50))
    BEGIN
       DECLARE ID_Temp INT DEFAULT 0;
       SELECT ID INTO ID_Temp FROM `Users` WHERE UserName=UserName_INPUT AND UserPass=UserPass_INPUT;
       
       SELECT IF(ID_Temp>0,1,0);
    END$$
    DELIMITER ;
    建议看看MYSQL的HELP
      

  6.   

    仔细看看我的代码,找找区别 SELECT @ID_Temp:=ID FROM `Users` WHERE UserName=UserName_INPUT AND UserPass=UserPass_INPUT;
    OR
    SELECT ID INTO ID_Temp FROM `Users` WHERE UserName=UserName_INPUT AND UserPass=UserPass_INPUT;
        
      

  7.   


    字打错了 而且在执行procedure的时候会有打印相对应的变量值 以及执行的这个赋值语句时整个过程所花费的时间。