IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[cursor] initalisation de boucle


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 23
    Points : 8
    Points
    8
    Par défaut [cursor] initalisation de boucle
    Bonjour,

    j'ai ce type de curseur:

    CURSOR curs_1 IS
    SELECT x1,
    x2,
    x3,
    x4,
    x5,
    x6,
    x7,
    x8,
    x9,
    FROM Table1


    FOR c_fp_personne_ctrl_rec IN c_fp_personne_ctrl

    LOOP

    MOn code;
    end loop;

    Comment je peux faire pour tester si ce curseur me renvoit quelque chose.
    Je voudrais renvoyer une erreur lorsque l'on a not data found.

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Tu peux être utiliser l'instruction curseur%NOTFOUND...

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    en faisant ceci

    if curs_1%found then
    message('ok');
    else
    message('not ok');

    end if;

    mais il ne me reconnait pas le curs_1

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Tu mets l'instruction dans ton loop?
    Et avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if curseur%NOTFOUD then
    cela ne fonctionne pas non plus?

  5. #5
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonjour,

    La seule facon est d'initialiser une variable dans la boucle pour indiquer qu'au moins une ligne a été remontée par le curseur.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  6. #6
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    DROP TABLE table1
    /
    CREATE TABLE table1
    (x1 INTEGER
    ,x2 INTEGER)
    /
    INSERT INTO table1 VALUES (1,1)
    /
    INSERT INTO table1 VALUES (2,2)
    /
    COMMIT
    /
    SET SERVEROUTPUT ON SIZE 100000
     
    DECLARE
    CURSOR curs_1 IS
    SELECT x1,
           x2
    FROM   table1
    ;
    l_flag  BOOLEAN := FALSE;
    BEGIN
    FOR lc_rec IN curs_1
    LOOP
      dbms_output.put_line('Loop '||lc_rec.x1);
      l_flag := TRUE;
    END LOOP;
     
    IF l_flag THEN
      dbms_output.put_line('Found records');
    ELSE
      dbms_output.put_line('No record found');
    END IF;
     
    END;
    /

Discussions similaires

  1. Cursor boucle infinie
    Par cosmos38240 dans le forum Développement
    Réponses: 6
    Dernier message: 16/05/2011, 15h17
  2. lenteur d'une boucle FOR pour cursor
    Par zinabd dans le forum PL/SQL
    Réponses: 1
    Dernier message: 13/08/2010, 10h55
  3. Detecter boucle - Cursor - trigger
    Par nicodn02 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 11/02/2009, 15h50
  4. Cursor dans boucle
    Par jolatouf dans le forum Adaptive Server IQ
    Réponses: 1
    Dernier message: 12/09/2008, 09h32
  5. [T-SQL] Boucle sur les resultats d'un SELECT sans CURSOR
    Par la drogue c'est mal dans le forum Sybase
    Réponses: 1
    Dernier message: 16/06/2008, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo