2011-12-19 12 views
0

単純なストアドプロシージャを選択しますが、他のユーザーがnullになった結果として1つの列しか取得できません。エラーがどこにあるMysqlのストアドプロシージャは1つの列データのみを返します

誰かがあなたが名前の競合を持っている...

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

はいヨハンそれは、そのエラーを与える時 で3つのすべてのcolumsを選択することができません。私のために働いた。しかし、 。 クエリ:SELECT(@PFirstname、@PUsername、@PEmail) エラーコード:1241 オペランドは、個々のクエリHowevr 1列(複数可) が含まれている必要がありますが、PFirstname @ PUsername @ CALLのget_one_user_new(4、のように正常に動作します@ PEmail); #SELECT(@PFirstname); #SELECT(@PUsername); SELECT(@ PEmail); –

+0

@NaveenKumar、selectで '()'を使わないでください。 'CALL get_one_user_new(4、@ PUsername、@ PFirstname、@ PEmail); @PFirstnameをファーストネームで、@ PUsernameをユーザ名として、@ PEmailをメールで ' – Johan

+0

Thank You Johan.Its Done .. –

関連する問題