Verschachtelte Schleifen im TSQL

19/03/2009 - 15:02 von Andreas Jändl | Report spam
Hallo NG,

kann man in TSQL auch ineinander verschachtelte Schleifen programmieren?
Dass ich einen RS aufrufe, diesen durchlaufe und mit einem Wert daraus
wieder einen RS aufrufe. So wie in folgendem Beispiel? Und wenn es geht,
gibt es irgendwo ein Beispiel dafür?

Vielen Dank im voraus und herzliche Grüße,
Andreas

Hier mein Beispiel:

sql = "SELECT Feld1, Feld2 FROM Tabelle1"
rsTa.Open sql, cnn

i = 0
Do While Not rsTa.EOF
lng1 = rsTa!Feld1
dte1 = rsTa!Feld2

sql = "SELECT Feld3, Feld4 FROM Tabelle2
sql = sql & " WHERE Feld5 = " & lng1 ";"
rsTaPeil.Open sql, cnn

Do While Not rsTaPeil.EOF
lng2 = rsTaPeil!Feld3

sql = "SELECT Feld5 FROM Tabelle3
sql = sql & " WHERE Feld6 = " & lng2 & ";"
rsLiefer.Open sql, cnn, adOpenStatic
If rsLiefer.RecordCount > 0 Then

dte3 = rsLiefer!Feld5

If dte3 = x Then

sql = "UPDATE Tabelle4...
cnn.Execute sql

Else
sql = "UPDATE Tabelle5...
cnn.Execute sql

End If
End If
rsLiefer.Close

rsTaPeil.MoveNext
Loop
rsTaPeil.Close

rsTa.MoveNext
Loop
rsTa.Close
 

Lesen sie die antworten

#1 Peter Doering
19/03/2009 - 15:25 | Warnen spam
Hallo,

Andreas Jàndl wrote:

kann man in TSQL auch ineinander verschachtelte Schleifen programmieren?
Dass ich einen RS aufrufe, diesen durchlaufe und mit einem Wert daraus
wieder einen RS aufrufe. So wie in folgendem Beispiel? Und wenn es geht,
gibt es irgendwo ein Beispiel dafür?



In TSQL heisst das Cursor, Details und Beispiele siehe BOL.

Hier mein Beispiel:



Bist du sicher, dass du das nicht in einigen wenigen UPDATE-Statements
loesen kannst?

Beispiel:

UPDATE Tabelle4 SET FeldX = T3.FeldY
FROM Tabelle1 AS T1
INNER JOIN Tabelle2 AS T2 ON T1.Feld1=T2.Feld5
INNER JOIN Tabelle3 AS T3 ON T2.Feld3=T3.Feld6
INNER JOIN Tabelle4 AS T4 ON ...

Den Join zu Tabelle 4 kann ich aufgrund deines Beispiels nicht mehr
ableiten ;-)

Das gleiche Statement kannst du fuer Tabelle5 ermitteln. Einen Cursor
brauchst du dafuer IMO nicht, genausowenig wie die Iteration durch die
verschiedenen Recordsets zur Zeit.

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen