MySQL-选择不按需要工作的变量
我在select INTO子句中遇到了一个问题-MySQL-选择不按需要工作的变量,mysql,Mysql,我在select INTO子句中遇到了一个问题- CREATE PROCEDURE `sp_user_signup`( IN gender int, IN dob varchar(50), IN location int, IN email varchar(100), IN password varchar(50), IN verify_uuid varchar(256), IN fb_user bool ) BEGIN D
CREATE PROCEDURE `sp_user_signup`(
IN gender int,
IN dob varchar(50),
IN location int,
IN email varchar(100),
IN password varchar(50),
IN verify_uuid varchar(256),
IN fb_user bool
)
BEGIN
DECLARE User_ID INT DEFAULT 0;
DECLARE ENABLED BOOL DEFAULT TRUE;
SELECT user_id INTO User_ID FROM tbl_user_login WHERE email = email;
CALL sp_debug(ENABLED,1,User_ID,(select concat_ws('',"UserID:", User_ID)));
IF User_ID = 0 THEN
<do something>
ELSE
<do something>
END IF
END
我的tbl_用户登录名的值为email-v。psk@gmail.com.
即使我通过电子邮件v。psk@gmail.com要设置SP,它总是进入IF块。
调试中的User_ID的值为零
提前感谢。这不是你所期望的:
SELECT user_id INTO User_ID FROM tbl_user_login WHERE email = email;
问题是,你认为一封电子邮件是一个变量,另一封是一列。但是SQL无法读懂你的心思,所以两者都是专栏
在变量前面加上前缀,以区别于列。例如:
CREATE PROCEDURE `sp_user_signup`(
IN v_gender int,
IN v_dob varchar(50),
IN v_location int,
IN v_email varchar(100),
IN v_password varchar(50),
IN v_verify_uuid varchar(256),
IN v_fb_user bool
)
BEGIN
DECLARE v_User_ID INT DEFAULT 0;
DECLARE ENABLED BOOL DEFAULT TRUE;
SELECT user_id INTO v_User_ID FROM tbl_user_login WHERE email = v_email;
CALL sp_debug(ENABLED,1,v_User_ID,(select concat_ws('',"UserID:", v_User_ID)));
IF v_User_ID = 0 THEN
<do something>
ELSE
<do something>
END IF
END