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 de procédure stockée depuis une procédure stockée


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut Appel de procédure stockée depuis une procédure stockée
    Bonjour,

    alors le titre explique tout à fait ce que je veux,
    je voudrais appeler une procédure stockée depuis une autre procédure stockée, tout ça dans la même base oracle.
    J'ai essayé les quelques syntaxes trouvées sur internet mais j'ai toujours des erreurs.
    "Error(13,8): PLS-00103: Encountered the symbol "SELECTSERVICE" when expecting one of the following: := . ( @ % ; The symbol ":=" was substituted for "SELECTSERVICE" to continue. "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BEGIN
     call SELECTSERVICE(libelleService);
    merci bien

  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
    sans le call ça ira mieux

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    ah oui en effet, j'y ai meme pas pensé.

    en même temps comment ne pas être paumé avec des gars qui disent n'imp sur les sites pour apprendre ==>
    Les procédures stockées peuvent être appelées au moyen de l'instruction EXECUTE (SQL Server) ou CALL (Oracle) à partir d'une autre procédure ou d'un lot d'instructions
    et merci à toi

  4. #4
    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
    tu devrais savoir que le seul site de référence c'est Developpez.com

    http://sheikyerbouti.developpez.com/...age=Chap4#L4.1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    SQL> CREATE OR REPLACE PROCEDURE Test_Augmentation
      2     (
      3       PN$Numemp IN EMP.empno%Type
      4      ,PN$Pourcent IN OUT NUMBER
      5     ) IS
      6     LN$Salaire EMP.sal%Type ;
      7  BEGIN
      8      Select sal Into LN$Salaire From EMP Where empno = PN$Numemp ;
      9      -- augmentation virtuelle de l'employé
     10      PN$Pourcent := LN$Salaire * PN$Pourcent ;
     11  END;
     12  /
     
    Procédure créée.
    SQL> select empno, sal from emp where empno = 7369 ;
     
         EMPNO        SAL
    ---------- ----------
          7369        880
     
    SQL> Declare
      2    LN$Pourcent NUMBER := 1.1 ;
      3  Begin
      4    Test_Augmentation( 7369, LN$Pourcent ) ;
      5    dbms_output.put_line( 'Employé 7369 après augmentation : ' || To_char( LN$Pourcent ) ) ;
      6  End ; 
      7  /
    Employé 7369 après augmentation : 968

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CREATE OR REPLACE
    PROCEDURE SELECTABONNES 
    (
     nom XABO.NOMABO%type,
     prenom XABO.PNOMABO%type,
     telephone XABO.TELABO%type,
     libelleService XSCE.LBLSCE%type
    )
    AS
     
    abo XABO.NUMABO%type;
    service XABO.SCEABO%type;
     
    BEGIN
      SELECT NUMABO
      INTO abo
      FROM XABO 
      WHERE NOMABO = nom 
      AND PNOMABO = prenom
      AND SCEABO = SELECTSERVICE(libelleService);
    EXCEPTION
      WHEN no_data_found THEN
            BEGIN
              INSERT INTO XABO (NUMABO, NOMABO, PNOMABO, TELABO, SCEABO)
              VALUES (sequence.nextval, nom, prenom, telephone, service);
            END; 
     
    END SELECTABONNES;
    Alors que la syntaxe est exactement la meme qu'une des procédures que j'ai ecrite et fonctionne, celle-ci pose problème.
    Error(14,3): PL/SQL: SQL Statement ignored
    Error(19,16): PL/SQL: ORA-00904: : invalid identifier
    puisses-tu m'aider ^^

    edit : apparemment, il aimes pas qu'on appelle une procédure stockée depuis n'importe où. Peut-on affecter une procédure stockée a une variable, et où faut-il le faire?

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SCEABO = SELECTSERVICE(libelleService);
    si SELECTSERVICE n'est pas une fonction ça ne peux pas marcher. Merci de lire le tutoriel PL/SQL

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

Discussions similaires

  1. Affichier une image stockée depuis une BDD Mysql
    Par Paul75 dans le forum Développement iOS
    Réponses: 0
    Dernier message: 18/01/2015, 20h05
  2. Réponses: 3
    Dernier message: 30/12/2008, 09h33
  3. Réponses: 7
    Dernier message: 18/01/2008, 18h01
  4. Réponses: 3
    Dernier message: 28/08/2007, 15h21
  5. Réponses: 4
    Dernier message: 26/04/2007, 09h03

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