Comment puis-je créer une boucle sur une instruction de mise à JOUR qui fonctionne jusqu'à ce qu'il n'y a pas de rangée de gauche à la mise à jour?

Supposer que j'ai des milliers de lignes à mettre à jour.

Et j'ai l'intention de faire la mise à jour de manière itérative; par la seule mise à 1000 lignes par itération.

Et je tiens à itérer jusqu'à ce qu'il n'y a pas de lignes de gauche à jour.

Comment puis-je exécuter le script T-SQL ci-dessous jusqu'à ce qu'il n'y a pas de ligne pour mettre à jour?

-- 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
Pourquoi voulez-vous mettre à jour seulement 1000 max à chaque fois? Pour moi, il semble que la suppression de la clause where permettrait de résoudre votre problème. Mais vous en particulier que vous voulez faire 1000 a l'heure je suis en train de vous demander pourquoi?
J'ai donné les numéros comme un exemple, mais la raison est d'empêcher le temps de transaction-outs. Et la raison secondaire est : la Curiosité sur la mise en œuvre.

OriginalL'auteur pencilCake | 2011-12-29