next up previous contents
Next: 5.8 Curseur paramétré Up: 5 Curseur : Previous: 5.6 Fermeture d'un curseur   Contents

5.7 Boucles FOR LOOP sur un curseur

Les ordres OPEN, FETCH et CLOSE sont implicites.
syntaxe [«étiquette»]

        FOR nom_enregistrement IN nom_curseur | (SELECT... )
        LOOP
           ....
        END LOOP [étiquette];
Ex 1: DECLARE

      CURSOR c_docteur IS
             SELECT s.nom serv, p.nom nom, prnm, vacct
             FROM service s, personnel p
             WHERE s.cdsrv = p.cdsrv
             AND qualif = 'DOCTEUR' .
             AND vacct < (SELECT AVG(trtmnt) * 0.75
             FROM personnel
             WHERE qualif = 'INTERNE'
             AND cdsrv = p.cdsrv);

     BEGIN
      FOR I IN c_docteur
      LOOP
           INSERT INTO docteur VALUES ( I.serv,I.nom,I.prnm,I.vacct ) ;
      END LOOP;
     END;
Ex2: BEGIN

      FOR I IN (SELECT nom, prnm, sx, qualif, dattit
                FROM personnel
                WHERE sx = '2' AND TO_CHAR(dattit,'YY') IN ('90','91'))
      LOOP
       INSERT INTO embauche VALUES ( I.nom,I.prnm,I.sx,I.qualif,I.dattit );
      END LOOP;
     END;


Florence Bannay 2000-11-13