# Arrays in SQL



## Rokko_11 (10. Jul 2012)

Hallo!

Gibt es sowas wie Arrays in SQL?
Ich stelle mir ungefähr folgendes vor:


```
a = ('1','2','3','5','8','13','21');

-- und dann beliebig oft

update tabelle_1 set column_1 = "foo" where id in a;
-- usw...
update tabelle_n set column_k = "foo" where id in a;
```

Und wenn es sowas gibt, kann man das dann auch in SQL per (for|foreach)-Schleife durchlaufen?

Gruß!
Rokko


----------



## SlaterB (10. Jul 2012)

IN ist ein Schlüsselwort, eine normale SQL-Query bzw. Update kannst du damit anreichern,
für Zahlen (bei Id) dabei besser auf Anführungszeichen  verzichten

Variablen, Schleifen usw. gibt es in normalen SQL nicht, Querys kann man noch halbwegs mit UNION zusammen schreiben,
Updates nur einzeln hintereinander weg,


Stored Procedure gibt es in manchen DBs 
Gespeicherte Prozedur ? Wikipedia


> Neben der gewöhnlichen Syntax der Abfragesprache (meist SQL) können in gespeicherten Prozeduren auch zusätzliche Befehle zur Ablaufsteuerung und/oder Auswertung von Bedingungen hinzugefügt werden. Damit können sie mit Makrosprachen bestimmter Anwendungsprogramme verglichen werden.


----------



## jstei001 (10. Jul 2012)

Du kannst einen Array auch realisieren als Tabelle, da funktioniert glaub ich auch die abfrage [c]where id IN mytable[/c]. Ansonsten gibt es cursor, mit denen man eine for each schleife auf Tabellen einfach realisieren kann. Aber den gibts in PL/SQL nicht im normalen sql. Schau mal hier vllt hilfts ja 

SQL: 11.3.3 Arrays


----------



## dbit (12. Jul 2012)

hallo zusammen.
ein ähnliches problem(http://www.java-forum.org/datenbankprogrammierung/137657-arraylist-select.html)
habe ich auch. eine abfrage mit "IN" und die Liste
kann über 1000 Werte haben. wenn ich per schleife das ganze einzeln abfrage dann bricht
die verbindung zur datenbank ab(vermute timeout.....:autsch.


----------



## SlaterB (12. Jul 2012)

es gibt das IN-Statement, das SQL dazu kann man notfalls Zeichen für Zeichen als String zusammenbauen


----------



## dbit (12. Jul 2012)

SlaterB hat gesagt.:


> es gibt das IN-Statement, das SQL dazu kann man notfalls Zeichen für Zeichen als String zusammenbauen



das habe ich auch schon ausprobiert. odbc-treiber meldet ab ca. 300 einen fehler.;(


----------



## SlaterB (12. Jul 2012)

nun, das vermindert zumindest die Querys von 1000 auf 4, gibt das immer noch Abbrüche?

ich selber habe bei Hibernate bei 1000 Ids Grenze und verknüpfe mehrere INs mit OR


----------

