2011-11-10 36 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 - 基準 –

+0

@Mithun:[評論格式化常見問題](http://stackoverflow.com/editing-help#comment-formatting) –

回答

-1

這的確是possile做一個insert ... select
而且您可以從該選擇中選擇多行。

下面的代碼應該可以工作。

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)';