Comme dans le sujet. Puis-je simplement réinitialiser la position du curseur au début dans Transact-SQL, afin qu'il puisse s'exécuter à nouveau sur la table? Je veux le réinitialiser dans le contexte suivant:
DECLARE @userID INT
DECLARE user_cursor CURSOR FOR SELECT userID FROM users
WHILE /* some condition */
BEGIN
...
FETCH NEXT FROM user_cursor INTO @userID
IF @@FETCH_STATUS = 0
BEGIN
/*... here goes the reset of the cursor ...*/
END
...
END
vous devez déclarer votre curseur comme défilement, comme ceci
declare c scroll cursor for (select statement);
puis à tout moment pour localiser le premier, utilisez simplement ce qui suit
fetch first from c;
Les données récupérées par le curseur ne changeront pas.
STATIQUE
Définit un curseur qui crée une copie temporaire des données à utiliser par le curseur. Toutes les demandes adressées au curseur sont traitées à partir de cette table temporaire dans tempdb; par conséquent, les modifications apportées aux tables de base ne sont pas reflétées dans les données renvoyées par les récupérations effectuées sur ce curseur, et ce curseur ne permet pas de modifications.