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.
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
Vous devez vous connecter pour publier un commentaire.
Essayer cette boucle
Pourquoi ISNULL - parce qu'il n'est pas clair si le champ IsVegetable prendre la valeur null ou n'est pas, si ce n'est pas alors ISNULL pas nécessaire
Où il n'existait pas de lignes à gauche avec IsVegetable <> 1 - la boucle va s'arrêter parce @@ROWCOUNT = 0 ou < 1000 (pour la dernière itération)
Et pouvez-vous expliquer le mécanisme qui assure la boucle de travail jusqu'à 0 lignes de gauche?
Ajouté à répondre.
soupir, où est le FAIRE lorsque vous en avez besoin...
Merci Oleg! Il semble donc que je ne peux pas atteindre la valeur de @@ROWCOUNT de l'instruction WHILE?
OriginalL'auteur Oleg Dok