2011-12-19 60 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