2011-07-27 3 views
0

私はMYSQL開発者ではなく、コードを書くだけでした。私のコードで何か愚かなことをしているなら、私の謝罪を受け入れてください。mysqlの変数を1行に設定する

私は、userID = 1の場合、select *のような単一の行を取得し、それを変数に割り当て、何らかの計算を行うために列にアクセスする必要があります。まず、これは可能ですか?私はこの機能を保存しようとすると、私は

以下
DELIMITER $$ 

CREATE DEFINER=`user`@`%` FUNCTION `GetReportees`(userid VARCHAR(255)) RETURNS varchar(50) CHARSET latin1 
    DETERMINISTIC 
BEGIN 

    DECLARE Var1 varchar(120); 
    DECLARE Var2 varchar(120); 
    Select @Var1=forename, @Var2=surname from company_users.users where userID = @userid limit 1; 
    return @Var1; 
END 

のような単純な関数を書いた理由は、私は一歩一歩を通過しようとした は、つまり、それはERROR 1415: Not allowed to return a result set from a functionことを言います。しかし、私は明らかにvarchar変数を返します。

誰でも私が間違っていることを教えてもらえますか?それほど難しいことではないはずです。

感謝

よろしく

答えて

3

あなたはuser-defined variableslocal variablesとの差異に関するドキュメントを読んでください。あなたの例では

あなたは、このようにそれらを使用する必要がありますので、あなたは、パラメータと2のローカル変数を持っている:

DELIMITER $$ 

CREATE DEFINER=`user`@`%` FUNCTION `GetReportees`(p_userid VARCHAR(255)) 
    RETURNS varchar(120) CHARSET latin1 
    DETERMINISTIC 
BEGIN 

    DECLARE Var1 varchar(120); 
    DECLARE Var2 varchar(120); 

    Select forename, surname 
    into Var1,Var2 
    from company_users.users 
    where userID = p_userid 
    limit 1; 

    return Var1; 
END 
+0

お返事に感謝。できます。私は感謝します。 – AnarchistGeek

関連する問題