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 :

Appel d'une fonction avec paramètre OUT


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut Appel d'une fonction avec paramètre OUT
    Bonjour,

    J'ai une fonction PIPELINED qui me retourne un tableau représentant l'historique des actions d'un client.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GET_HISTORIQUE(id_client IN NUMBER) RETURN TABLE_HISTORIQUE PIPELINED
    Comme je devais en + retourner une valeur indépendante à ce tableau, j'ai déclaré un paramètre OUT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GET_HISTORIQUE(id_client IN NUMBER, code_retour OUT VARCHAR2 ) RETURN TABLE_HISTORIQUE PIPELINED
    La fonction étant appelée depuis Java, je pense que l'appel sera simple en passant en paramètre une variable pour code_retour , mais moi j'aimerai tester ma fonction directement en SQL

    Le SQL qui me servait d'appel de test :

    select * from table
    (
    get_historique(150)
    );
    Me renvoi désormais cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-06553: PLS-306: numéro ou types d'arguments erronés dans appel à 'GET_HISTORIQUE'
    Comment je peux tester cette fonction directement via SQL comme je le faisais avant l'ajout de ce paramètre ?

    J’espère avoir était assez clair , merci

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Une fonction avec un paramètre out, c'est comme une procédure avec 2 paramètres out. Donc ce que tu veux tester n'est pas possible en sql.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Merci pour ta réponse , c'est bien ce que je pensais.

    J'ai essayé de faire un petit bout de code bidon en PL pour tester l'appel à cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DECLARE
    nb_client NUMBER;
    v2_code VARCHAR2(100);
    BEGIN
      select hist_client into nb_client from
              table (
                     get_historique(150,v2_code)
                    ) where rownum = 1;
     
      dbms_output.put_line('Le code récupéré est : ' ||v2_code);       
    END;
    Et j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ORA-06572: Fonction GET_HISTORIQUE sans arguments
    ORA-06512: à ligne 5
    As-tu une idée pourquoi l'appel ne fonctionne pas ?

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Une fonction pipeline simule un retour équivalent à un select.
    Tu ne peux pas renvoyer un paramètre avec une telle fonction, à moins de l'insérer dans la collection de retour pour chaque ligne.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Ok merci.
    Au final je n'ai pas trouvé d'autres solutions que de retourner ma valeur dans la collection de retour comme tu as dit.

  6. #6
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    As tu testé de compiler ta fonction get_historique() ?
    et voir si es erreurs apparaissent?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter procedure get_historique compile;
    show errors

  7. #7
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par sweetasnz Voir le message
    As tu testé de compiler ta fonction get_historique() ?
    et voir si es erreurs apparaissent?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter procedure get_historique compile;
    show errors
    Oui j'ai bien compilé ma fonction et aucune erreur n'apparait.
    J'ai laissé tombé l'idée du paramètre en OUT, car comme la dit McM avec une fonction PIPELINED tu ne peux pas retourner de param

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

Discussions similaires

  1. Appel à une fonction avec paramètre contenant apostrophe
    Par tomy29 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2012, 19h10
  2. Réponses: 3
    Dernier message: 20/01/2012, 14h18
  3. Appel d'une fonction avec plusieurs paramètres
    Par kazarn dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/06/2009, 18h55
  4. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  5. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49

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