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

SQL Oracle Discussion :

Appel une procédure d'une autre procédure


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Par défaut Appel une procédure d'une autre procédure
    Bonjour,

    J'ai un package dans la quelle, j'ai écrit 2 procédures stockées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Procedure P1 
    IS
    Begin
        --Appel une autre procédure
        Procedure 2 (1);
    End P1
     
    Procedure P2 (a in number)
    IS
    Begin
       body P2....
    End P2
    Le problème est que quand je compile, il affiche pas d'erreurs et quand j'éxecute, il affiche:
    ORA-04063: package body "sss" comporte des erreurs
    ORA-06508: PL/SQL : unité de programme nommée : "sss" introuvable
    ORA-06512: à ligne 10

    Par contre, si j'écris le suivant, j'ai pas de problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Procedure P1 
    IS
    Begin
        body P2
    End P1
    Ce que je constate est qu'il y a un pb avec l'appel de la P2, ce que je ne comprends pas car quand j'écris directement le code dans la P1, cela fonctionne.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    le package specification contient bien les 2 ? Ce serait plus simple avec un vrai exemple

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    La "compilation" du package body travaille en séquentiel.
    --> premiere procedure trouvée = P1 qui contient un appel à P2 avec P2 un objet inconnu puisque le "compilateur" n'est pas encore "passé" sur P2 (qui se trouve après P1).

    Solution : inverser la définition, c'est-à-dire
    Procedure P2 (a IN number)
    IS
    Begin
    body P2....
    End P2

    Procedure P1
    IS
    Begin
    --Appel une autre procédure
    Procedure 2 (1);
    End P1

  4. #4
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    plalm a raison et c'est même une "erreur" typique de tout langage mais pas seulement pl/sql => juste permuter les places des fonctions, la fonction à utiliser dans l'autre en premier

    J'en profite pour demander aussi si on peut faire de la récursivité avec les procédures et fonctions PL/SQL ?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Sauf que la déclaration différenciée des headers et body permet gérer ce cas de figure....
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 61
    Par défaut
    Oui mais en la mettant dans le header, on la rend aussi publique non ? Ce qui n'est pas forcément ce que l'on veut.

    Sinon pour répondre à randriano, oui on peut faire de la récursivité y compris sur une procédure/fonction qui n'est pas déclarée dans le header. Ainsi, une procédure peut s'appeler elle-même sans déclaration dans le header mais deux procédures qui s'appellent entre elles doivent être déclarée (ou au moins la deuxième dans le code) .

  7. #7
    Membre extrêmement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par défaut
    OK plalm !!!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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