J'essaie de voir s'il est possible d'effectuer une mise à jour dans une boucle de curseur et que ces données mises à jour sont réfléchies lors de la deuxième itération dans la boucle.Comment valider dans une boucle CURSOR?
DECLARE cur CURSOR
FOR SELECT [Product], [Customer], [Date], [Event] FROM MyTable
WHERE [Event] IS NULL
OPEN cur
FETCH NEXT INTO @Product, @Customer, @Date, @Event
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT * FROM MyTable WHERE [Event] = 'No Event' AND [Date] < @DATE
-- Now I update my Event value to 'No Event' for records whose date is less than @Date
UPDATE MyTable SET [Event] = 'No Event' WHERE [Product] = @Product AND [Customer] = @Customer AND [Date] < @DATE
FETCH NEXT INTO @Product, @Customer, @Date, @Event
END
CLOSE cur
DEALLOCATE cur
On suppose quand le sql exécute la colonne de l'événement est NULL pour tous les enregistrements Dans le sql ci-dessus, je suis en train de faire une sélection dans la boucle du curseur pour interroger MyTable où la valeur de l'événement est « aucun événement », mais retourne la requête pas de valeur même si je fais une mise à jour dans la ligne suivante. Donc, je pense qu'il est même possible de mettre à jour une table et que les données mises à jour sont reflétées dans l'itération suivante de la boucle du curseur.
Merci pour toute aide, Javid
Salut, La raison pour laquelle je devais utiliser le curseur est je dois calculer la moyenne mobile pour chaque enregistrement en fonction de la valeur de la colonne de l'événement (à savoir aucun événement) des dossiers antérieurs. La moyenne mobile est calculée pour déterminer une anomalie et je l'utilise pour définir la valeur de l'événement à quelque chose comme «anormal».Mais, si je trouve trois ou plus consécutifs «anormaux», je dois tous les réinitialiser à «aucun événement», ainsi quand la moyenne est calculée pour l'enregistrement suivant, les points de données précédents doivent être utilisés. Désolé si je vous avais dérouté. Espérons que cette information aide .. – user320587
@user: pourriez-vous s'il vous plaît poster un exemple de jeu d'enregistrements et la sortie désirée? – Quassnoi
Les résultats finaux seraient déterministes, il serait juste indéterministe comment ils ont été atteints. S'il arrivait de traiter les lignes dans l'ordre décroissant de la date, cela nécessiterait beaucoup moins d'opérations que dans l'ordre croissant. –