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 :

Peut-on utiliser des procédures non stockées dans un bloc PL/SQL?


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut Peut-on utiliser des procédures non stockées dans un bloc PL/SQL?
    Bonjour,

    Je vous explique le contexte. J'essaie de faire un rattrapage de données en pl/sql. J'ai un script shell qui exécute un fichier .sql, ce fichier sql est un bloc pl/sql. Dans ce bloc j'ai pas mal de code qui revient alors je l'ai factorisé en procédure.

    j'ai donc quelque chose de la forme :

    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
    procedure name1() is
    declare
           ...
    begin
           ...
    end name1;
     
    procedure name2() is
    declare
           ...
    begin
           ...
    end name2;
     
    procedure name3() is
    begin
           ...
    end name3;
     
    begin
           name1();
           name2();
           name3();
    end;
    Lorsque j'execute mon shell il se bloque sur l'exécution du .sql, sous toad lorsque je pose le contenu de mon .sql je n'ai aucun message d'erreur mais le traitement ne se fait pas. Je ne peux donc même pas tracer mes variables, du coup j'en suis à me demander si ce ne serait pas mes appels des procédures qui posent problème ou leur utilisation.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Vu que tes procédures n'ont pas de paramètres, vire les () lors de leurs appels et de leurs définitions.

    Pour moi, ça devrait tourner sans les parenthèses, j'ai un script qui fait la même chose qui et marche très bien.

  3. #3
    Membre averti Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Points : 442
    Points
    442
    Par défaut
    Il manque un "/" à la fin de chacun des blocs. Si tu exécutes ton script sous SQL*Plus, ça ne peut pas fonctionner.
    Ton code doit plutôt ressembler à ça :
    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
    procedure name1() IS
    declare
           ...
    begin
           ...
    end name1;
    /
     
    procedure name2() IS
    declare
           ...
    begin
           ...
    end name2;
    /
    procedure name3() IS
    begin
           ...
    end name3;
    /
     
    begin
           name1();
           name2();
           name3();
    end;
    /

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Il faut placer les procédures dans la zone de déclaration du programme prinicipal :
    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
    SQL> set serverout on
    SQL> declare
      2    procedure name1 IS
      3    begin
      4      dbms_output.put_line('Proc name1');
      5    end;
      6    procedure name2 IS
      7    begin
      8      dbms_output.put_line('Proc name2');
      9    end;
     10    procedure name3 IS
     11    begin
     12      dbms_output.put_line('Proc name3');
     13    end;
     14  begin
     15    name1;
     16    name2;
     17    name3;
     18  end;
     19  /
    Proc name1
    Proc name2
    Proc name3
     
    PL/SQL procedure successfully completed.
     
    SQL>

  5. #5
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    merci à tous,

    C'était effectivement une succession de plein de petite erreurs de la sorte qui me gênait.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/03/2015, 09h37
  2. Réponses: 7
    Dernier message: 07/04/2009, 16h49
  3. [MySQL] Utilisation des procédures stockées PHP/MySQL
    Par flodotsoft dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/07/2008, 11h36
  4. [Divers] Peut-on utiliser une procédure stockée dans Crystal ?
    Par noumian dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 19/06/2008, 21h50
  5. [CR][VB6] Utilisation des procédures stockées
    Par couledoux dans le forum SDK
    Réponses: 3
    Dernier message: 10/03/2005, 14h29

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