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 :

Passer un CURSOR en paramètre à une procédure


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Par défaut Passer un CURSOR en paramètre à une procédure
    Bonjour,

    Le titre est explicite, je souhaite passer un CURSOR en paramètre d'une procédure.

    Je suis sous Oracle 10g.

    J'ai écrit ce qui suit, mais j'ai un soucis de TYPE.
    Quand je met "CURSOR" à la place de "SYS_REFCURSOR", ça ne marche pas non plus.

    Le code en question :
    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
    SET serveroutput ON
     
    DECLARE
     
      CURSOR INTERNAL_PATH_CURSOR IS
        Select 1 as id from dual
        union
        Select 10 from dual
      ; 
     
      myId INTEGER;
     
      PROCEDURE printRow( cur_lig IN SYS_REFCURSOR) IS
      BEGIN
         LOOP
           FETCH cur_lig INTO myId ;
           EXIT WHEN cur_lig%NOTFOUND ;
           dbms_output.put_line( 'Found : ' || myId ) ;
         END LOOP ;
      End;
     
    BEGIN
     
      dbms_output.put_line( 'Trying procedure with cursor ...' ) ;
      printRow(INTERNAL_PATH_CURSOR);
     
    END;
    /
    Merci à vous pour votre aide.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Un curseur <> une variable curseur.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Par défaut
    Ok.

    Merci pour l'info, mais je suis pas un expert PL/SQL, et malheureusement ça ne me fait pas avancer ...

    Je cherche et teste, mais je sèche ...

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printRow(cursor(select 1 as id from dual));

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printRow(cursor(select 1 as id from dual));
    Le résultat :
    Rapport d'erreur :
    ORA-06550: Ligne 23, colonne 12 :
    PLS-00405: sous-interrogation non autorisée dans ce contexte
    ORA-06550: Ligne 23, colonne 3 :
    PL/SQL: Statement ignored
    06550. 00000 - "line %s, column %s:\n%s"
    *Cause: Usually a PL/SQL compilation error.

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Regarde sys_refcursor et essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    v_rc sys_refcursor;
    ...
     
    open v_rc for INTERNAL_PATH_CURSOR;
    printRow(v_rc);

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/04/2010, 13h54
  2. Passer un paramètre à une procédure mysql
    Par megtrinity dans le forum SSIS
    Réponses: 6
    Dernier message: 13/04/2010, 14h42
  3. Réponses: 15
    Dernier message: 18/11/2008, 17h41
  4. Réponses: 7
    Dernier message: 13/12/2005, 16h31

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