2014-09-05 74 views
0

我有一個存儲過程作爲MySQL的使用設置變量選擇

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 @[email protected][email protected][email protected]_date=NULL; 
CALL GetInfo(
    'XYZ', 
    @fname, 
    @lname, 
    @user_status, 
    @reg_date 
); 

SELECT @fname,@lname,@user_status,@reg_date; 

但我只得到NULL值。我認爲這個問題是使用Select語句進行變量賦值的。

我知道在MSSQLSERVER中,我們可以像SELECT一樣在SELECT語句中分配變量,但我不確定MySQL。

回答

0

你必須改變你程序的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$$ 

變量名必須大於領域

不同而將工作