2011-11-08 7 views
3

私はMySQLにストアドプロシージャを書いています。以下は、私が書いたコードです:mysql prepared statementから戻り値を選択する方法は?

SET @qry = 'SELECT id into @wid FROM work_profile where candidate_id = 1223 limit 1'; 
PREPARE statement FROM @qry; 
EXECUTE statement; 

ただし、@widは実行後にnullです。

SELECT id FROM work_profile where candidate_id = 1223 limit 1 

は、これは、この構文で使用するための1つの行を返すことができる1443

+1

は、テーブルにデータが含まれているwork_profileていますか? 'SELECT id FROM work_profile'を実行してください。完全なコードを表示してください。あなたは@wid変数をどのように使いますか? – Devart

+0

編集された質問 – Anand

+0

を参照してください。どうやって@wid変数を使用しますか? – Devart

答えて

3

私のために、次の作品:

USE test; 
DELIMITER $$ 
CREATE PROCEDURE GETNID() 
BEGIN 
    SET @query = 'SELECT 100 INTO @nid'; 
    PREPARE statement1 FROM @query; 
    EXECUTE statement1; 
END$$ 
DELIMITER ; 

そしてプロシージャを呼び出すために:

CALL GETNUMBER(); 
SELECT @nid; 

しかし、これは、MySQLクエリブラウザで動作するようには思えません。私は、MySQLコマンドラインクライアントの使用に頼る必要がありました。私は、クエリブラウザが各ステートメントの後にセッションをクリアすると思う。より多くの例をEXECUTEするため

、MySQLのマニュアルを参照してください。

0

クエリの値を返します。どちらか1行を返しますWHERE句を指定、またはLIMIT 1

+1

しかし、返されたnullでも – Anand

0

は、クエリが値を持つ単一の行を返しますINTOは、クエリから@wid削除この

set @qry := 'test'; 
execute statement using @qry 
0

を試してみて、LIMIT 1を追加します欲しいです。

関連する問題