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 dans une procédure


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Par défaut Appel d'une fonction dans une procédure
    bonjour à tous,
    voilà j'ai un problème bête, j'essaye d'appeler une fonction PL/SQL dans une procédure (PL/SQL aussi)
    mais à l'execution ça ne passe pas

    ORA-00900: invalid SQL statement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    texte :='	
    rep_L := '||compte_livraison||'.livraison(
    '||idCommand||','||refprod||','||nom||','||qty||')';
    execute immediate texte;

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Lorsque vous jouez avec le SQL dynamique, affichez le contenu de la chaîne a exécuter à l'écran ou dans une table afin de le jouer ensuite sous Sql*plus, Toad ou Sql Developer. vous verrez tout de suite les erreurs de syntaxe (souvent un espace manquant)

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Voici aussi comment faire plus propre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    plsql_block := 'BEGIN ma_procedure(:a, :b, :c); END;';
    EXECUTE IMMEDIATE plsql_block USING 'a', 'b', 'c';

  4. #4
    Membre confirmé

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Par défaut
    merci, malheureusement, il s'agit d'une fonction et non d'une procédure,
    je dois récuperer la valeur de retour

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760

  6. #6
    Membre confirmé

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Par défaut
    finalement, il fallait faire un select dans la requete,
    puis un into <variable> dans l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    texte := 'select '||compte_livraison||'.livraison('''||idCommand||''','''||refprod||''','''||nom||''','||qty||') from dual';
    execute immediate texte into rep_L;
    ne pas oublier un petit :
    pragma autonomous_transaction;
    dans la fonction appelée (ici livraison) pour éviter les conflits et le tour est joué

    enfin en aura fallut du temps pour débloquer ça :s

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

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Réponses: 4
    Dernier message: 04/06/2010, 14h48
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Appel d'une fonction dans une fonction (sql server 2005)
    Par catchouse dans le forum Développement
    Réponses: 10
    Dernier message: 06/05/2009, 12h03
  5. Appeler une fonction dans une fonction
    Par bryanstaubin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2007, 09h39

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