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 :

Transmettre code erreur PLSQL à un .SQL puis à un .bat BATCH


Sujet :

PL/SQL Oracle

Vue hybride

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

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 230
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 230
    Par défaut Transmettre code erreur PLSQL à un .SQL puis à un .bat BATCH
    Bonjour,

    J'ai un script .bat qui appel un fichier .sql qui appelle une procédure :

    Pour le moment, j'ai cela :
    Fichier .bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus user/pass@base@procedure.sql
    Fichier .sql
    ;


    Pour pouvoir récupérer le code erreur, j'ai cru comprendre qu'il fallait faire un bloc anonyme dans le fichier .sql.

    Mon nouveau fichier .sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WHENEVER SQLERROR EXIT 1 ROLLBACK
    WHENEVER OSERROR EXIT 1 ROLLBACK
    set echo on
    set serveroutput on size 100000
    set pause off
    set feedback on
    set verify on
    set term on
    set lines 115
    DECLARE
    BEGIN 
    DBMS_OUTPUT.PUT_LINE('Beginning select');
    @MA_PROCEDURE;
    END;
    Mon fichier .bat n'a pas bougé.

    Ma question est :
    Coté PL/SQL, dans ma procédure MA_PROCEDURE comment envoyer l'erreur ?

    Je pensais utilisé la commande EXIT mais cette commande ne semble pas être pour. Il semblerait que ce soit uniquement pour quitter une boucle (une sortie de break en php par exemple)
    Documentation EXIT de dvp : http://sheikyerbouti.developpez.com/...e=Chap1#L1.2.7


    Je me suis reféré à ces posts
    http://www.unix.com/fr/unix-dummies-...out-param.html
    http://www.developpez.net/forums/d10...t-sql-sqlcode/

  2. #2
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 230
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 230
    Par défaut
    Bon je pense être sur la bonne voie. Il faut que j'utilise les errorlevel pour .bat ...

    Le .bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ECHO on
    VERIFY ON
    SET SortDate=%date%
    sqlplus user/pass@base@procedure.sql
    echo %ERRORLEVEL%
    Et après dans le SQL, il faut que j'ai la section EXCEPTION, je pense :

    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
    WHENEVER SQLERROR EXIT 1 ROLLBACK
    WHENEVER OSERROR EXIT 1 ROLLBACK
    set echo on
    set serveroutput on size 100000
    set pause off
    set feedback on
    set verify on
    set term on
    set lines 115
    DECLARE
    BEGIN 
    DBMS_OUTPUT.PUT_LINE('Beginning select');
    @MA_PROCEDURE;
    EXCEPTION
    WHEN OTHERS THEN
       DBMS_OUTPUT.PUT_LINE('toto');   
       return 4;
    END;

    Et dans la procédure MA_PROCEDURE, je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    raise_application_error(-1,'testing exit code...');
    mais je n'arrive toujours pas à récuperer le code

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    J'ai l'impression que vous cherchez 9.17 Using a Variable for the SQL*Plus Return Status
    Ici EXIT est une commande sqlplus, rien à voir avec EXIT du PL/SQL.

  4. #4
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 230
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 230
    Par défaut
    En effet, lorsque je fais un :

    Fichier .bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ECHO ON
    VERIFY ON
    SET SortDate=%date%
    sqlplus user/pass@base@procedure.sql
    echo %ERRORLEVEL

    et dans le fichier .sql
    echo %ERRORLEVEL => renvoie 4.

    Maintenant, j'aimerai renvoyer le code retour 4 (par exemple) à partir du bloc anonyme PL/SQL dans le fichier SQL.

    J'ai essayé avec un exit juste avant le lancement de la procédure dans le bloc anonyme dans le fichier SQL.

    C'est un test pour transmettre le code erreur du fichier .SQL au fichier .BAT dans un premier temps. Chaque chose en son temps.

    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
    WHENEVER SQLERROR EXIT 1 ROLLBACK
    WHENEVER OSERROR EXIT 1 ROLLBACK
    SET echo ON
    SET serveroutput ON size 100000
    SET pause off
    SET feedback ON
    SET verify ON
    SET term ON
    SET LINES 115
    DECLARE
    BEGIN 
    DBMS_OUTPUT.PUT_LINE('Beginning select');
    EXIT :4
    @MA_PROCEDURE;
    EXCEPTION
    WHEN OTHERS THEN
       DBMS_OUTPUT.PUT_LINE('toto');   
    END;
    J'ai essayé exit sous plusieurs forme :
    exit 4
    exit '4'
    ext :4
    exit :'4'
    return 4

    mais malheureusement
    echo %ERRORLEVEL => renvoie toujours 1.

  5. #5
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 230
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 230
    Par défaut
    Citation Envoyé par mnitu Voir le message
    J'ai l'impression que vous cherchez 9.17 Using a Variable for the SQL*Plus Return Status
    Ici EXIT est une commande sqlplus, rien à voir avec EXIT du PL/SQL.
    J'ai vu qu'il fallait que je passais par un bloc anonyme dans mon fichier .SQL qui appelle ma procédure.
    Dans ce cas là, si je ne peux pas utiliser le EXIT dans mon bloc, que dois je utiliser ?
    j'ai testé return, cela ne fonctionne pas non plus.

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    variable ret_code number
    BEGIN 
      :ret_code := 0;
      DBMS_OUTPUT.PUT_LINE('Beginning select');
    @MA_PROCEDURE;
    EXCEPTION
    WHEN OTHERS THEN
       DBMS_OUTPUT.PUT_LINE('toto');   
       :ret_code := 4;
    END;
    /
    EXIT :ret_code

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/10/2008, 16h22
  2. Codes erreurs SQL Jet
    Par s.n.a.f.u dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/07/2008, 09h28
  3. [SQL Server 2005] Code erreur 945
    Par nox75 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/02/2008, 13h37
  4. Réponses: 6
    Dernier message: 09/06/2006, 00h19
  5. Réponses: 1
    Dernier message: 02/05/2006, 10h20

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