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 :

Problème lors de la création d'une fonction sous Oracle 11g


Sujet :

Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut Problème lors de la création d'une fonction sous Oracle 11g
    Bonjour,

    Je souhaite créer une requête sql qui depuis l'identifiant d'un article me communique l'ensemble de sa nomenclature (quels sont les articles qui le compose).

    J'ai à ma disposition un report sur Crystal Report basé sur une jointure entre la table des articles et une procédure stockée.

    J'ai vu sur internet qu'il convenait de créer une fonction, inclue dans le script sql, qui appelle la procédure stockée.

    J'ai essayé de m'inspirer de ce que je vois sur le web et dans les autres fonctions, en vain.

    Ma fonction ne compile pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE
    FUNCTION "GET_NOMEN" (mID_TREE_BOM IN NUMBER) RETURN REFCUR
    as mCur REF CURSOR:=null;
    BEGIN 
       CALL GetRPTTreeBom(mID_TREE_BOM, mCur);
    RETURN mCur;
    END;
    Voici mes messages d'erreur:
    Error(4,9): PLS-00103: Symbole "GETRPTTREEBOM" rencontré à la place d'un des symboles suivants : := . ( @ % ; Symbole ":=" a été substitué à "GETRPTTREEBOM" pour continuer.

    Je précise que la procédure stockée est sous un autre schéma que le schèma sur lequel est la fonction.

    Je suis sous Oracle 11G.

    En suite, je souhaite réaliser une jointure entre la table article et la fonction sur un identifiant. Comment peut s'écrire le script ?

    Merci d'avance.
    Julien.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    C'est un peu comme si en C, pour appeler une autre fonction en C a l'interieur d'un programme vous faisiez un execvp ou autre: Le CALL n'a pas sa place ici.
    Mettez simplement le nom de la fonction que vous souhaitez appeler:
    <nom_schema>.nom_fonction

    Et un lien qui vous fera perdre du temps maintenant, mais vous en ferez gagner tout le temps apres:
    http://docs.oracle.com/cd/E11882_01/...s.htm#CIHDFDJG
    Les bases du PL/SQL

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Merci pour la réponse et le lien qui me font bien avancer.

    La procédure stockée que j'appelle me restitue un ensemble de données.
    Je souhaite pouvoir utiliser cette restitution dans une requête SQL.
    Ma fonction appelle cette procédure stockée. Elle doit donc être à même de me retourner des données de type curseur si j'ai bien compris.
    En regardant sur le lien qui m'a été communiqué, je dois choisir un data_type, un type de donnée que me renvoi la fonction. Je ne vois pas quoi choisir pour un curseur.

    Voici le début de ma procédure stockée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PROCEDURE GetRPTTreeBom(mID_TREE_BOM IN NUMBER, mCur OUT REFCUR)
      IS  
     
      BEGIN
          OPEN mCur FOR SELECT * FROM Table(CAST(GetListRPTBom(mID_TREE_BOM) AS ART_RPT_INFO));
      END;
    Merci d'avance.
    Julien.

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

Discussions similaires

  1. [sybase] Problème lors de la création d'une fonction
    Par khaledmoez dans le forum Sybase
    Réponses: 2
    Dernier message: 23/05/2013, 15h40
  2. [XL-2003] VBA - Problème lors de la création d'une nouvelle fonction
    Par Simon_cenb dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/05/2013, 16h41
  3. Réponses: 11
    Dernier message: 05/08/2009, 12h30
  4. [MySQL] problème lors de l'appel d'une fonction
    Par jexl dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/06/2007, 09h53
  5. Réponses: 4
    Dernier message: 04/06/2007, 11h04

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