Wie kann ich eine Schleife erstellen, die auf einer UPDATE-Anweisung funktioniert, bis es keine Zeilen-Links zu aktualisieren?
Davon ausgehen, dass ich Tausende von Zeilen zu aktualisieren.
Und ich planen, zu tun, das update iterativ; nur durch die Aktualisierung von 1000 Zeilen pro iteration.
Und ich will zu iterieren, bis es keine Zeilen gibt, Links zu aktualisieren.
Wie kann ich das ausführen der T-SQL-Skript unten, bis es keine Zeile zu aktualisieren?
-- TODO: Create a loop so that it exists when there is no ROW left to be updated;
-- how can I do it?
UPDATE tableToUpdate
SET IsVegetable = 1
WHERE Id IN
(SELECT TOP 1000 Id
FROM tableToUpdate
WHERE Date = '2011-07-23 14:00')
-- Loop ends
Warum willst du etwas aktualisieren, nur 1000-max jedes mal? Mir scheint es, dass das entfernen der WHERE-Klausel würde Ihr problem lösen. Aber Sie angeben, sagen Sie, Sie wollen, es zu tun, 1000 mal im gerade Fragen, warum?
Ich gab die zahlen ein Beispiel, aber der Grund ist zu verhindern, dass transaction time-out. Und sekundärer Grund ist : die Neugierde auf die Umsetzung.
Ich gab die zahlen ein Beispiel, aber der Grund ist zu verhindern, dass transaction time-out. Und sekundärer Grund ist : die Neugierde auf die Umsetzung.
InformationsquelleAutor pencilCake | 2011-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese Schleife
Warum ISNULL - denn es ist nicht klar - wenn das Feld IsVegetable null-Werte zulässt oder nicht, wenn nicht, dann ISNULL nicht benötigt
Wenn es keine Zeilen werden Links mit IsVegetable <> 1 - die Schleife wird beendet, weil der @@ROWCOUNT = 0 oder < 1000 (für die Letzte iteration)
Und können Sie erklären, den Mechanismus sorgt dafür, dass die Schleife funktioniert bis 0 Zeilen übrig?
Hinzugefügt zu beantworten.
seufz, wo ist TUN WÄHREND, wenn Sie es brauchen...
Vielen Dank Oleg! So es scheint, dass ich nicht erreichen kann, die @@ROWCOUNT-Wert aus der WHILE-Anweisung?
InformationsquelleAutor Oleg Dok