2009-09-16 13 views
6

C'è un modo in uno script MySQL per dichiarare una matrice (o qualsiasi raccolta) e passarci sopra per fare qualcosa?Variabile di array in mysql

Per esempio,

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


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

in quali circostanze del mondo reale vorresti farlo? se la matrice proviene da un'istruzione SELECT, allora dovresti semplicemente INSERIRE ... SELEZIONA. se la matrice proviene dalla tua applicazione, allora dovresti INSERIRE IN VALORI ESEMPIO (@valore, 2), (valore @, 5), (valore @, 2) ... – longneck

+3

Voglio solo fare uno script di manutenzione per aggiungere nuovi valore. Invece di fare una copia incolla di ogni inserto, vorrei creare una lista all'inizio dello script. Le persone non dovranno leggere tutto lo script per sapere cosa modificare, ma solo la variabile all'inizio. – Mike

+0

@longneck, chiedi ai visitatori di 16k su questa pagina, oltre ai 67k visitatori su http://stackoverflow.com/q/12176709/632951 per le circostanze del mondo reale in cui lo faresti. – Pacerier

risposta

2

No, SQL non supporta PER OGNI/sintassi ecc. Il più vicino si otterrebbe da utilizzare i cursori. Inoltre, non v'è alcuna sintassi array in SQL - dovreste usare:

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

... per costruire la vostra "matrice di valori" equivalente in SQL.

Gli script SQL avrebbero istruzioni INSERT individuali. Dovresti usare PHP/Java/etc. utilizzare la sintassi loop-esque FOR come ciò che viene fornito nell'esempio.

+0

Non mi dispiace usare un cursore, ma i valori devono provenire da qualcosa come questo SET @myValues ​​[2,34,22]. Thanx – Mike

+0

Grazie, è quello che stavo cercando. La sintassi è troppo brutta da usare ma ha sollevato la mia domanda. – Mike

0

Potresti usare qualcosa come MySQL SET? invece di eseguire il looping è possibile memorizzare i valori in un SET.

+0

No, non posso, ho bisogno di inserire valori in diverse righe. Voglio farlo per avere uno script facile da usare. – Mike

+0

Usa PHP (o qualcosa del genere) e cicla su ogni array e fai semplicemente un semplice inserimento quindi –

+0

ne ho bisogno in uno script mySQL. – Mike