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

PL/SQL Oracle Discussion :

probleme de curseur


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 190
    Points : 49
    Points
    49
    Par défaut probleme de curseur
    Bonjour,
    j'ai essaye d'utiliser un cursuer ds une procedure
    en fait , ce select rend les chiffres places entre virgules
    et donc je souhaite parcourir tout chiffres, je les recupere ds la procedure comme varchar2 (exemple '5,6,8,7,3')
    ce select , je l'ai teste et ca marche
    par contre le probleme est ds le curseur
    voici la declaration :

    CREATE OR REPLACE Procedure dispatch_LISSAGE(projectIdList varchar2,perId number,genId number, ecriture number) is
    cursor cur_lissage(projectIdList in varchar2) is select substr(the_string, decode(level, 1, 1, instr(the_string,',',1,level-1)+1), decode( instr(the_string,',',1,level), 0, length(the_string), instr(the_string,',',1,level) - decode( level, 1, 0, instr(the_string,',',1,level-1))-1) ) ProjectID from (select projectIdList the_string from dual ) connect by level < length(replace(translate(the_string,'01234567890','00000000000'),'0')) + 2;
    lissage_rec cur_lissage%ROWTYPE;


    ca retourne cette erreur :

    PROCEDURE CPFA.DISPATCH_LISSAGE
    On line: 22
    PLS-00225: subprogram or cursor 'CUR_LISSAGE' reference is out of scope


    Cdlt
    Sallemel

  2. #2
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 127
    Points : 146
    Points
    146
    Par défaut
    Bonsoir,

    Pourrais tu expliquer ton problème en francais
    Et mettre ton code entre balise quote en l'indentant.
    ça sera plus facile à comprendre et à lire pour essayer de t'aider.
    Sylvain


  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 190
    Points : 49
    Points
    49
    Par défaut
    non, parceque ce pb est deja resolu
    j'ai utilise le curseur parametre et j'ai passe le parametre lors de l'ouverture du curseur
    open cur_lissage(projectIdList);


    sinon, si tu attends encore la traduction, fais moi signe

  4. #4
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 127
    Points : 146
    Points
    146
    Par défaut
    Ok ça roule
    Dans ce cas marque le
    ça évitera que des personnes perdent leur temps ...
    Sylvain


  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 190
    Points : 49
    Points
    49
    Par défaut
    la compilation s'est bien passee
    sauf que si je mets ds listprojet '1,2,6,9'
    ds ce cas, le select a partir duquel le curseur est defini, renvoie 4 entrees
    mais lors du parcours du curseur ca ne renvoie qu'une seule entree
    (c en debugguant avec toad que j'ai trouve le rowcount du curseur egale a 1, pourtant le select retourne 4 entrees)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    open cur_lissage(projectIdList);
    loop
         FETCH cur_lissage INTO lissage_rec;
     EXIT WHEN cur_lissage%NOTFOUND;
    -- trt
    end loop;
    close cur_lissage;
    Cdlt
    Sallemel

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Pour être plus propre, uitilise plutot cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FOR lissage rec IN cur_lissage(projectIdList) LOOP
      -- ici le traitement
      -- le record (lissage_rec) est remplis automatiquement
      -- sans FETCH ni NOTFOUND
      -- ni CLOSE (implicite)
      dbms_output.put_line(lissage_rec.champ1);
    end loop;
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 190
    Points : 49
    Points
    49
    Par défaut
    le probleme provient en fait de la version d'oracle(j'utilise oracle 9)
    du coup j'ai decoupe la requete definissant le curseur avec une autre select
    voici le nouveau select avec cette modif
    select projectID from ( select substr(the_string, decode(level, 1, 1, instr(the_string,',',1,level-1)+1), decode( instr(the_string,',',1,level), 0, length(the_string), instr(the_string,',',1,level) - decode( level, 1, 0, instr(the_string,',',1,level-1))-1) ) ProjectID from (select projectIdList the_string from dual ) connect by level < length(replace(translate(the_string,'01234567890','00000000000'),'0')) + 2 );

    et avec ca , je parcours toutes les entree renvoyes par le select

    Cdlt
    Sallemel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme du curseur parametrable ou utlfile?
    Par Mehdilis dans le forum Oracle
    Réponses: 3
    Dernier message: 26/09/2006, 18h31
  2. Probleme de curseur
    Par Cofondinde dans le forum SQL
    Réponses: 1
    Dernier message: 25/09/2006, 16h43
  3. [FLASH 8] Problème de curseur
    Par freija dans le forum Flash
    Réponses: 4
    Dernier message: 12/07/2006, 12h04
  4. Probleme de curseur
    Par os_rasta dans le forum ASP
    Réponses: 30
    Dernier message: 09/03/2006, 11h47
  5. [HTML] Probleme de curseur dans un formulaire
    Par Phenomenium dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/01/2006, 19h42

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