2009-09-16 16 views
6

MySQLスクリプトで配列(または任意のコレクション)を宣言し、ループして処理する方法はありますか?例えばmysqlの配列変数

SET @myArrayOfValue=[2,5,2,23,6] 


for each @value in @myArrayOfValue 
    INSERT INTO EXEMPLE VALUES(@value, 'hello'); 
end for each 
+4

可能な現実的な状況の下でこれをしたいですか?配列がSELECT文のものである場合は、INSERT ... SELECTを実行します。配列がアプリケーションからのものであれば、(@value、2)、(@ value、5)、(@ value、2)をINSERTする必要があります。 – longneck

+3

メンテナンススクリプトを使って新しい値。各インサートのコピー貼り付けを行う代わりに、スクリプトの冒頭にリストを作成したいと思います。人々は何を修正すべきかを知るためにすべてのスクリプトを読む必要はなく、最初は変数だけを読むでしょう。 – Mike

+0

@longneck、あなたがこれを行う現実の状況については、このページの16kの訪問者に加えて、67kの訪問者にhttp://stackoverflow.com/q/12176709/632951を問い合わせてください。 – Pacerier

答えて

2

いいえ、SQLは、各の/ etc構文についてはサポートしていません。カーソルを使用するのが最も近いでしょう。また、SQLには配列の構文がありません。

SELECT 2 FROM DUAL 
UNION ALL 
SELECT 34 FROM DUAL 
UNION ALL 
SELECT 24 FROM DUAL 

... "SQLの値の配列"を構成するには。

SQLスクリプトには個別のINSERT文が必要です。あなたはPHP/Java/etcの使用を検討しています。あなたの例で提供されているようなFORループ風の構文を使用します。

+0

私はカーソルを使用しても構いませんが、値はSET @ myValues [2,34,22]のようなものから来る必要があります。 Thanx – Mike

+0

Thanx、それは私が探していたものです。構文は使用するにはあまりにも醜いですが、それは私の質問をanwsered。 – Mike

0

MySQL SETのようなものを使用できますか?ループするのではなく、SETに値を格納することができます。

+0

いいえ、別の行に値を挿入する必要があります。スクリプトを使いやすくするためにこれをやりたい – Mike

+0

PHP(または何か)を使用し、各配列をループし、単純な挿入をして –

+0

私はmySQLスクリプトでそれを必要とします。 – Mike