2011-12-19 61 views
0

簡單的選擇存儲過程,但只有一列的結果是其他人得到空值。存儲過程在Mysql returnig中只有一列數據

有人能告訴我哪裏出錯..

DELIMITER $$ 
DROP PROCEDURE IF EXISTS `p4`.`get_one_user_new`$$ 
CREATE PROCEDURE `p4`.`get_one_user_new` 
(
IN USER_ID INT(11), 
OUT USER_NAME VARCHAR(255), 
OUT FIRST_NAME VARCHAR(255), 
OUT EMAIL VARCHAR(255) 
) 
BEGIN 
SELECT username,first_name,email 
INTO USER_NAME, FIRST_NAME, EMAIL 
FROM p4_users 
WHERE id = USER_ID; 
END $$ 
DELIMITER ; 



CALL get_one_user_new('4',@USERNAME,@FIRST_NAME,@EMAIL); 
SELECT @USERNAME,@FIRST_NAME,@EMAIL; 

回答

0

你有一個名稱衝突,你需要確保你的變量名不列名衝突。

CREATE PROCEDURE `p4`.`get_one_user_new` 
(
    IN PUserid INT(11), 
    OUT PUsername VARCHAR(255), 
    OUT PFirstname VARCHAR(255), 
    OUT PEmail VARCHAR(255) 
) 
BEGIN 
    SELECT username,first_name,email 
    INTO PUsername, PFirstname, PEmail 
    FROM p4_users 
    WHERE id = PUserid; 
END $$ 
+0

是約翰它爲我工作,但, 無法選擇所有三個colums同時 它給人一種錯誤。 查詢:SELECT(@PFirstname,@PUsername,@PEmail) 錯誤代碼:1241 操作數應包含1列(S) Howevr各個查詢工作正常,像 CALL get_one_user_new(4,@ PUsername,@ PFirstname, @PEmail); #SELECT(@PFirstname); #SELECT(@PUsername); SELECT(@PEmail); – 2011-12-19 10:33:20

+0

@NaveenKumar,不要在select中使用'()',只要:'CALL get_one_user_new(4,@ PUsername,@ PFirstname,@ PEmail); SELECT @PFirstname as firstname,@ PUsername as username,@ PEmail as email' – Johan 2011-12-19 11:17:05

+0

Thank You Johan.Its Done .. – 2011-12-19 11:21:39