Wie nutzt man loops in TSQL?
In TSQL, ich möchte den folgenden code aus zu verwenden hart codiert dhomes, um mit Hilfe einer Schleife für die Optimierung. Mein gescheiterter Versuch am versuchen, fügen Sie eine Schleife ist ebenfalls enthalten.
Declare @dhome Tinyint, @bp smallint, @lr smallint, @q smallint
// Set @dhome = 1
While(@dhome <= 3) // My attempt to add a loop
SELECT @lr = MAX(NQdDate), @q = NQd
FROM NQdHistory
WHERE dhomeId = @dhome
GROUP BY NQdDate, NQd
SELECT @bd = COUNT(*)
FROM bdhome
WHERE NQdDate= @lr AND dhomeID= @dhome
DELETE FROM ND1 WITH(XLOCK)
WHERE dhomeID= @dhome AND NQdDate= @lr
UPDATE NQdHistory
SET Nbd = @q - @@RowCount - @bp, NBd = @bp
WHERE NQdDate= @lr AND dhomeID= @dhome
Set @dhome = @dhome +1 //My attempt to end a loop
- Sie benötigen eine Start-und ENDE unter Ihrem während
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist auf dem richtigen Weg. Sie fehlt Ihr beginnen und enden. Auch, sicher sein, geben
@dhome
einen Wert. Es sieht aus wie Sie angefangen haben und haben es kommentiert sich auf die Dritte Zeile:Wenn Sie sind vertraut mit C/C#/C++, denken Sie an T-SQL Beginnen und Enden, wie die geschweiften Klammern
{
und}
, wenn Sie mehr vertraut mit VBThen
undEnd If
. Oder mehr wie pascalsBegin
undEnd
. Sie bekommen die Idee 🙂FOR
- Schleife in T-SQL. Den code in die Antwort im Grunde simuliert die Funktionalität einerFOR
loop jedoch.Fehlt ein begin und end auf Ihrer während.
WHILE (Transact-SQL)
Beispiel 1
Beispiel 2
Nur ein weiterer Ansatz, wenn Sie sind in Ordnung, die Verwendung von temp-Tabellen.Ich habe persönlich getestet, und es verursacht auch keine Ausnahme (auch wenn die temp-Tabelle enthält keine Daten.)