Schleife in Perl

Ich sitze hier an einem Projekt in dem ich eine MSSQL Datenbank auslesen und in ein Action Request System schreiben muss.
Das funktioniert soweit ganz gut, ich frag mich allerdings schon seit ein paar Tagen wie ich wohl eine Schleife um das ganze basteln kann.

Kurz zum Ablauf des Scripts:
Führt einen SQL Befehl auf vorhandene DB aus
Soll Eintrag für Eintrag durchgehen und diesen in ein Action Request System schreiben.

Das Grundgerüst steht, allerdings fehlt mir halt die Schleife.

Schon klar dass es ne While Schleife wird aber wie sag ich ihm dass er das solange machen soll bis kein Datensatz mehr in dem SQL Befehl auf die DB steht.

Hoffe es kann mir jemand helfen.

Kurz zum Ablauf des Scripts:
Führt einen SQL Befehl auf vorhandene DB aus
Soll Eintrag für Eintrag durchgehen und diesen in ein Action
Request System schreiben.

Das Grundgerüst steht, allerdings fehlt mir halt die Schleife.

Schon klar dass es ne While Schleife wird aber wie sag ich ihm
dass er das solange machen soll bis kein Datensatz mehr in dem
SQL Befehl auf die DB steht.

Leider vergisst du, uns zu verraten, mit welchem Modul du die Datenbank ansprichst.
Somit kann ich nur als Beispiel zeigen, wie man das mit DBI macht:

while (my $row = $sth-\>fetchrow\_hashref) {
 print "$row-\>{id}: $row-\>{foo}\n";
}

das hört dann ganz einfach deswegen auf, weil fetchrow_hashref() irgendwann undef zurückliefert.
Das wird wohl so ähnlich auch mit deinem Modul funktionieren, welches es auch immer ist.

Ah stimmt, aber du hast gut geraten.
Ich nutze DBI =)

Habs auch direkt mal ausprobiert und funktioniert wunderbar.
Steh aber direkt vor dem nächsten Problem.
Wenn ich alle Daten in meinem Action Request System wieder löschen will, brauch ich entweder einen Befehl der quasi „delete all“ sagt (den es meines Wissens nicht gibt) oder ne Schleife, von der ich leider wirklich noch keine Ahnung hab wie ich sie angehen soll :frowning:

Hallo,

Steh aber direkt vor dem nächsten Problem.
Wenn ich alle Daten in meinem Action Request System wieder
löschen will, brauch ich entweder einen Befehl der quasi
„delete all“ sagt (den es meines Wissens nicht gibt) oder ne
Schleife, von der ich leider wirklich noch keine Ahnung hab
wie ich sie angehen soll :frowning:

naja, mit SQL kannst du schon eine ganze Tabelle leeren mit DELETE FROM your_table, falls du nicht alles loeschen willst, musst du noch eine WHERE-Klausel anhaengen, genau wie beim SELECT.

Gruesse,
Moritz

Das Problem ist ich kann auch keinen Fall die Tabellen löschen muss aber die Einträge in diesem Action Request System löschen, aber mit dem Hasharray lief ganz gut.

Nächste Frage :wink:
Ich will die Schleife nur ausführen wenn die aus der DB geladene ID noch nicht in diesem Action Request System vorhanden sind.

Müsste mir also irgendwie alle vorhandenen ID’s in ein Array laden und das mit der geladenen ID vergleichen.

Geht sowas überhaupt? Wenn ja wie?