Dans ce cours , on va découvrir le mécanisme des curseurs (cursor tsql) : c’est quoi? pourquoi les utiliser? comment ?

1- cursor tsql : Définition

Un curseur est un groupe d’enregistrements résultat de l’interrogation d’une base de données. L’intérêt d’utiliser des curseurs est de pouvoir faire des traitements ligne par ligne chose qui n’est pas possible avec une requête SQL simple

2- cursor tsql : création

Syntaxe :

  1. déclarer un curseur : Declare nom_curseur [scroll] Cursor  For Requête
  2. ouvrir un curseur :        Open nom_curseur
  3.  lire un enregistrement à partir d’un curseur :      Fetch First|Next|Prior|Last from nom_curseur into variable1, variable2,..
  4. Fermer un curseur :       Close nom_curseur
  5. Libérer les ressources utilisées par un curseur : Deallocate Nom_Curseur

-Atteindre le premier enregistrement du curseur : first

– Atteindre l’enregistrement du curseur suivant celui en cours: next

Atteindre l’enregistrement du curseur précédent celui en cours : Prior

– Atteindre le dernier enregistrement du curseur : Last

Remarque 1 :

Atteindre l’enregistrement se trouvant à la position n dans le curseur :

Fetch absolute n from nom_curseur into variable1, variable2,…

– Atteindre l’enregistrement se trouvant après n positions de la ligne en cours :

 Fetch Relative Num_Ligne from nom_curseur into variable1, variable2,…

Remarque 2 : La variable système @@fetch_status est utilisée pour détecter la fin du curseur. Tant que cette variable a la valeur 0, on a pas encore atteint la fin du curseur.

Exemple : soit la table article(numA,libelle,PU) . Afficher la liste des articles sous la forme :  L’article Numéro … portant la désignation ….coûte .…

Solution :

Declare @a int, @b Varchar(10), @c float

Declare Cur_ListeArticle Cursor 

for Select NumA, libelle,PU from article

Open Cur_ListeArticle

Fetch Next from Cur_ListeArt into @a,@b,@c

While @@fetch_status=0

Begin

Print ‘L’article numéro ‘ + convert(varchar,@a) + ‘ portant la

désignation ‘ + @b+ ‘ coûte ‘ + convert(varchar,@c)

Fetch Next from Cur_ListeArt into @a,@b,@c

End

Close Cur_ListeArticle

Deallocate Cur_ListeArticle

REMARQUE : Types de curseurs

– CURSEURS AVANT UNIQUEMENT (sans scroll) : permettent de lire les lignes dans l’ordre (de la première jusq’à la dernière) .Utilise Next seulement

-CURSEURS DE DEFILEMENT : (scroll)

Toutes les options de FETCH sont autorisés

Bravo!! vous pouvez maintenant faire le TP de cette partie : TP6-Tsql-Curseurs

Vous pouvez suivre la liste des vidéos du cours base de données (Merise + Sql + Transact sql) sur notre chaine youtube : Vidéos Bases de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *