MySql 使用 Select 设置变量

标签 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,
            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;

但我只得到 NULL 值。我认为问题在于使用 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$$

变量名称必须与字段不同

并且会起作用

关于MySql 使用 Select 设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678479/

相关文章:

sql - 满足计数条件

java - Oracle异常: SQL command not properly ended

mysql - 如何并排连接两个表的结果?

mysql - WordPress导入数据库错误

mysql - SQL 性能建议 - 在数百万条记录上选择空列花费的时间太长

php - 高效的 ajax 查询多位信息

php - 使用 jamierumbelow/codeigniter-base-model 时的自定义查询

MySQL获取10分钟间隔内按日期时间分组的平均值

mysql - 如何获得具有相同截止标记的行集?

sql查询将行转换为列