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 :

[PL/SQL] Procédure renvoyant un curseur.


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 39
    Points
    39
    Par défaut [PL/SQL] Procédure renvoyant un curseur.
    Salut a tous

    J'ai créé une procédure dans un package qui renvoie un curseur en résultat. ca donne un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    PROCEDURE PARSE_CHRA_DATA (MY_CURSOR OUT TYP_CURSEUR, <Autres Paramètres>)
    IS
     
    ...
    <Traitement>
    ...
     
    OPEN MY_CURSOR FOR
    	SELECT *
    	FROM TEMP_TABLE
    	ORDER BY ID;
     
    END PARSE_CHRA_DATA;
    MY_CURSOR étant le fameux curseur renvoyant le résultat de la requete sur la table temporaire TEMP_TABLE.
    le type TYP_CURSEUR est défini à un autre endroit dans le package.
    Le problème c que dès que je change la requete, pour par exemple prendre des données d'une autre table et faire une jointure, Oracle me sort une erreur (PLS-00382: expression is of wrong type).
    Idem lorsque je remplace * par les noms des quelques champs.

    J'ai vérifié la syntaxe a chaque fois, et la requete que j'essaye de mettre fonctionne si on la lance séparément. l'erreur ne survient que dans la procédure.

    Je suis en Oracle 9i.

    J'espere que quelq'un aura une idée
    Kal

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 35
    Points
    35
    Par défaut
    peux tu nous poster la déclaration de ton curseur ?
    tu dois avoir spécifié sa structure à mon avis, alors qu'on peut s'en passer et fonctionner alors comme tu le souhaiterais.

    En fait, en concept "pointeur", tu as spécifié le type au bout du pointeur, au lieu de laisser le pointeur générique...
    DBA Oracle(OCA) / SQL Server 2000
    "Trop anticiper les problèmes, c'est parfois les générer..."

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Salut SFAUVEL,

    Voici la déclaration de mon curseur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TYPE TYP_CURSEUR IS REF CURSOR RETURN TEMP_TABLE%ROWTYPE;
    arf en la recopiant je crois que je viens de comprendre ce que tu viens d'expliquer. j'ai trop typé mon curseur.

    Comment faire pour qu'il soit plus générique ? peut-on carrément virer la partie "TEMP_TABLE%ROWTYPE" ou existe-t-il un type global ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Ayé je viens de virer TEMP_TABLE%ROWTYPE et tout fonctionne parfaitement.
    Je redéfinirais pe un type plus tard quand je serais sur de mon résultat.

    J'avais pensé a regarder partout sauf ici. Ca parait maintenant évident.
    Syndrome de la tete ds le guidon ça... Il est temps que le WE arrive...

    Merci Beaucoup SFAUVEL !!

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

Discussions similaires

  1. [Procédure stockée] Générer un et renvoyer un curseur
    Par TekP@f dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/03/2010, 08h29
  2. Tester une procédure stockée renvoyant un curseur
    Par david71 dans le forum PL/SQL
    Réponses: 14
    Dernier message: 26/08/2008, 12h50
  3. [PL/SQL]Procédure qui ne se finit pas...
    Par tscoops dans le forum Oracle
    Réponses: 8
    Dernier message: 13/12/2004, 15h53
  4. Réponses: 4
    Dernier message: 07/12/2004, 08h11
  5. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17

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