2011-11-10 15 views
0

MySQLストアドプロシージャからINSERT INTO ... SELECTステートメントを呼び出そうとしています。MySQLストアドプロシージャ内のINSERT INTO .. SELECTに関する既知の問題はありますか?

は、私はいつものMySQLからこのエラーを持つ終わる:

ERROR 1242 (21000): Subquery returns more than 1 rowマイ確かに複数の行を返す文を選択しても、その上にINSERT文がありません。

私には何が欠けていますか?

コード:

PREPARE query FROM 'INSERT INTO tmpTable (client_program, ref_client, ref_household) SELECT ref_client_program, ref_member, \"84k3\" FROM client_program_members WHERE ref_client_program IN (74)'; 
EXECUTE query ; 
DEALLOCATE PREPARE query; 
+0

[参考] [1] [1]:http://stackoverflow.com/questions/1971150/mysql -Benchmark –

+0

@ミスン:[コメントフォーマットのよくある質問] –

答えて

-1

それは、insert ... selectを行うことpossile確かです。
その選択肢から複数の行を持つことができます。

次のコードは機能するはずです。

DECLARE sql varchar(1000); 
SET sql = CONCAT("INSERT INTO tmpTable (client_program, ref_client, ref_household) " 
       , " SELECT ref_client_program, ref_member, \'84k3\' " 
       , " FROM client_program_members WHERE ref_client_program = ? "); 

PREPARE query FROM sql; 
SET @client_prog = 74; 
EXECUTE query USING @client_prog; 
DEALLOCATE PREPARE query; 
+0

なぜ-1、エラーはどこですか? – Johan

0

わからないが、このラインを試してみてください -

PREPARE query FROM 'INSERT INTO `tmpTable`(client_program, ref_client, ref_household) SELECT ref_client_program, ref_member, ''84k3'' FROM client_program_members WHERE ref_client_program IN(74)'; 
関連する問題