MySql使用Select设置变量
我有一个存储过程MySql使用Select设置变量,mysql,sql,Mysql,Sql,我有一个存储过程 DELIMITER $$ CREATE PROCEDURE GetInfo( in userid varchar (150), out fname varchar (50), out lname varchar (50), out user_status varchar (30), out reg_date DATETIME ) BEGIN select fname=users_table.first_name
DELIMITER $$
CREATE PROCEDURE GetInfo(
in userid varchar (150),
out fname varchar (50),
out lname varchar (50),
out user_status varchar (30),
out reg_date DATETIME
)
BEGIN
select fname=users_table.first_name,
lname=users_table.last_name,
user_status=users_table.user_status,
reg_date=users_table.reg_date
FROM users_table
WHERE users_table.userid=userid;
END$$
我用它就像
SET @fname=@lname=@user_status=@reg_date=NULL;
CALL GetInfo(
'XYZ',
@fname,
@lname,
@user_status,
@reg_date
);
SELECT @fname,@lname,@user_status,@reg_date;
但我只得到空值。我认为问题在于使用Select语句进行变量赋值
我知道在MSSQLSERVER中,我们可以像我一样在SELECT语句中分配变量,但我不确定MySQL。您必须在您的过程中更改SQL:
DELIMITER $$
CREATE PROCEDURE GetInfo(
in userid varchar (150),
out fname varchar (50),
out lname varchar (50),
out p_user_status varchar (30),
out p_reg_date DATETIME
)
BEGIN
select users_table.first_name,
users_table.last_name,
users_table.user_status,
users_table.reg_date
into fname,lname,p_user_status,p_reg_date
FROM users_table
WHERE users_table.userid=userid
limit 1;
END$$
变量名必须不同于字段
而且会起作用