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的区别,百度无果,求助各位大侠指点迷津,谢谢~
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的区别,百度无果,求助各位大侠指点迷津,谢谢~
:= 在procedure里面是可以用的 但是在function, trigger里面是不能用的
而且在执行procedure的时候会有打印相对于的变量值 一直执行的时间。
select into 语句 procedure function trigger 等里面都是可以用的。=和 :=都是赋值语句 区别等高人来解答
select @id:=id from tt在SP(trigger)中对变量赋值
SET ID_Temp=0;
但是我这样写是报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
但是我这样写是报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
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
OR
SELECT ID INTO ID_Temp FROM `Users` WHERE UserName=UserName_INPUT AND UserPass=UserPass_INPUT;
字打错了 而且在执行procedure的时候会有打印相对应的变量值 以及执行的这个赋值语句时整个过程所花费的时间。