sql server curseur | Exam-Lib
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

sql server curseur

abdelouafiDec 18, 2017

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      617
      Likes Received:
      12
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Soit le schéma suivant:
      sql server curseur.png
      Exercice 1
      :

      Supposons qu'il n'existe pas de contrainte clé étrangère entre le champ NumCom de la table LigneCommande et le champ NumCom de la Commande. On souhaite supprimer la commande numéro 5 ainsi que la liste de ces articles.


      Exercice 2:

      1- Qu’est ce qu’un cursseur ?

      2- Qu’il est l’intêret du curseur ?

      3- Déclarer un curseur static nommé « test » ?

      4- Comment atteindre le premier enregistrement du curseur « test » ?

      5- Comment atteindre l’enregistrement numéro 5 du curseur test ?

      6- Comment atteindre l'enregistrement se trouvant après n positions de la ligne ?

      7- Fermer le curseur et libérer les ressources de ce curseur test ?

      8- afficher la liste des articles sous la forme :

      L'article Numéro ... portant la désignation ….coûte ….





      Exercices 3

      1- Ecrire un programme qui pour chaque commande :

      · Affiche le numéro et la date de commande sous la forme : Commande N° : ……Effectuée le : ….

      · La liste des articles associés

      · Le montant de cette commande


      2- Ecrire un programme qui pour chaque commande vérifie si cette commande a au moins un article. Si c'est le cas affiche son numéro et la liste de ses articles sinon affiche un message d'erreur 'Aucun article pour la commande …. Elle sera supprimée et supprime cette commande.
       
      Last edited: Dec 18, 2017
      Loading...
      Exercice 1:

      Code:
      Begin Tran
      Delete from Commande where NumCom=5
      Delete from LigneCommande where NumCom=5
      Commit Tran
      Exercice 2:


      1- Un curseur est un groupe d'enregistrements résultat de l'interrogation d'une base de données.

      2- 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 où un seul traitement sera appliqué à toutes les lignes répondant à cette requête et seul le résultat final sera visible.

      3- Declare test cursor static for (requête……..)

      4- Fetch First from test into variable1, variable2 …..

      5- Fetch absolute 5 from test into variale1, variable2…

      6- Fetch relative n from test into variable1, variable2

      7- Close test et Deallocate test

      8- Script du curseur:

      Code:
      Declare @num int, @desig varchar(40), @prix real
      
      Declare moncurseur cursor for select numart,designart,prixart from article
      
      Open moncurseur
      
      Fetch next from moncurseur into @num,@desig,@prix
      
      While @@fetch_status=0
      
        Begin
      
        Print 'L''article numéro ' + convert(varchar,@num) + ' portant la désignation ' + @desig+ ' coûte ' + convert(varchar,@prix)
      
      Fetch Next from Cur_ moncurseur into @num,@desig,@prix
      
        End
      
      Close Cur_ListeArt
      
      Deallocate Cur_ListeArt

      Exercice 3:

      1-

      Code:
      Declare @a int, @b DateTime,@numa int, @desig varchar(40),@c decimal
      
      Declare moncurseur cursor for select Select C.NumCom,DatCom, Sum(PUArt*QteCommandee) From Commande C, Article A, LigneCommande LC Where C.NumCom=LC.NumCom and LC.NumArt=A.NumArt group by C.NumCom,DatCom
      
      Open moncurseur
      
      Fetch next rom moncurseur into @a,@b,@c
      
      While @@fetch_status=0
      
      Begin
      
        Print 'Commande N° : ' + convert(varchar,@a) + ' effectuée le : ' + convert(varchar,@b)
      
        Select Numart from LigneCommande where numcom=@a
      
        Print 'Son montant est : ' + convert(varchar,@c)
      
        Fetch Next from moncurseur into @a,@b,@c
      
      End
      
      Close moncurseur
      
      Deallocate moncurseur


      2-

      Code:
      Declare @a int
      
      Declare Cur_Com Cursor for select NumCom from Commande
      
      open Cur_Com
      
      Fetch Next from Cur_Com into @a
      
      While @@fetch_status =0
      
      Begin
      
        if not exists (Select NumArt from LigneCommande where NumCom=@a)
      
        Begin
      
        Print 'Aucun article pour la commande N° : ' + convert(varchar, @a) + '. Elle sera supprimée'
      
        Delete From Commande Where NumCom=@a
      
        End
      
        Else
      
        Begin
      
        Print 'Commande n° : ' + convert(varchar, @a)
      
        Select A.NumArt, DesArt, PUArt, QteCommandee From Article A, Lignecommande LC Where A.NumArt=LC.NumArt and NumCom=@a
      
      End
      
      Fetch Next from Cur_Com into @a
      
      End
      
      Close Cur_Com
      
      Deallocate Cur_Com

Share This Page

Share