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 :

récupérer code d'erreur sqlplus


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut récupérer code d'erreur sqlplus
    Bonjour à tous,
    Je voudrais récupérer le code d'erreur de ma procédure stockée appelée par
    un script
    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
     
    #!/bin/ksh 
     
    #--------------------------déclaration de constantes---------------------
    CH_TMP=/usr/users/itcdev/sqli/vide/
    LE_USER=code 
    LE_PASSWORD=password
     
     
     
    function CallProc
    {
    sqlplus -s ${LE_USER}/${LE_PASSWORD} <<ENDSQL  >${CH_TMP}/fichier.txt
    whenever sqlerror exit sql.sqlerror;
    	 declare
    		 err_msg varchar2(60);
    		 res number;
    	 begin
    		$1(err_sg,es); 
    	 end;  
    	 exit
    ENDSQL
     
    }
    CallProc proc_stock
    echo $?
    J'ai donner des faux arguments pour générer une erreur.
    Or on m'affiche 0 comme si il n'y en a pas.
    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut

    Tu utilises un bloc PL anonyme, il faut faire un raise pour propager cette erreur au niveau 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
    15
    16
    function CallProc
    {
    sqlplus -s ${LE_USER}/${LE_PASSWORD} <<ENDSQL  >${CH_TMP}/fichier.txt
    whenever sqlerror exit sql.sqlerror;
    	 declare
    		 err_msg varchar2(60);
    		 res number;
    	 begin
    		$1(err_sg,es); 
    exception
       when others then
           raise;
    	 end;  
    	 exit
    ENDSQL

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut

    Même en ajoutant ces lignes j'ai le même résultat.

    $? = 0.

    Voila

  4. #4
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Je présume que le $1 est la variable contenant la procédure stockée, il faut que cette dernière retourne également une erreur par un raise, sinon, cela ne marchera pas

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    Voila ce que j'ai à la fin de ma procédure:
    EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
    NULL;
    WHEN OTHERS
    THEN
    ErrMess:= SQLERRM;
    Result:=SQLCODE;
    DBMS_OUTPUT.PUT_LINE('INTERCEPTE CODE ERREUR :' || SQLCODE || 'MESSAGE' || SQLERRM) ;
    raise;


    et même avec ça j'ai $? = 0

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sqlplus -s scott/tiger <<ENDSQL
    var res number
    var err_msg varchar2(60)
    set autoprint on
     
    exec $1(:err_msg,:res)
     
    exit :res
    ENDSQL
    echo $?

  7. #7
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    Merci pour ton aide mais il me retourne toujours $? =0

    il y a un autre moyen de récupérer l'erreur dans un fichier??

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    quelle erreur?

  9. #9
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    quand j'appele la procédure stockée je lui passe deux arguments non déclarés
    et donc je voudrais récupérer l'erreur que ça va générer.
    Merci d'avance

  10. #10
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Citation Envoyé par c.betty Voir le message
    quand j'appele la procédure stockée je lui passe deux arguments non déclarés
    et donc je voudrais récupérer l'erreur que ça va générer.
    Merci d'avance
    Pourrais-tu nous dire ce que tu entends par 2 arguments non déclarés ?
    Soit tu veux dire que ta procédure ne prend pas d'argument et tu lui passes les variables err_sg ... wouah, je viens de comprendre en regardant les noms de tes variables. Essayes d'être un peu plus clair, parce que pour arriver à comprendre que tu as fait exprès de faire une erreur de frappe, fallait vraiment suivre !!!

    Par contre, non, désolé, je ne sais pas comment faire pour détecter les erreurs de frappe du programmeur

  11. #11
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Peut-être qu'il te manque juste un slash

    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
    #!/bin/ksh 
    
    #--------------------------déclaration de constantes---------------------
    CH_TMP=/usr/users/itcdev/sqli/vide/
    LE_USER=code 
    LE_PASSWORD=password
    
    
    
    function CallProc
    {
    sqlplus -s ${LE_USER}/${LE_PASSWORD} <<ENDSQL  >${CH_TMP}/fichier.txt
    whenever sqlerror exit failure
    	 declare
    		 err_msg varchar2(60);
    		 res number;
    	 begin
    		$1(err_sg,es); 
    	 end;  
    /
    	 exit
    ENDSQL
    
    }
    CallProc proc_stock
    echo $?
    edit: j'ai mis EXIT FAILURE

  12. #12
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    Bonjour,

    Tu avais raison pour le slash.
    Le problème c'est que avec ça je récupère un quand il y a une erreur dans la procédure stockée. Je voudrais récupérer aussi le message d'erreur.

    Merci d'avance

  13. #13
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944

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

Discussions similaires

  1. récupérer le code d'erreur dans une procédure stockée MYSQL
    Par zephira dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 05/07/2008, 07h01
  2. Réponses: 3
    Dernier message: 22/02/2008, 15h02
  3. [code d'erreur] pouvoir récupérer le texte
    Par cysboy dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/09/2007, 10h57
  4. [sqlplus] code d'erreur
    Par jean-jacques varvenne dans le forum Oracle
    Réponses: 6
    Dernier message: 25/01/2005, 07h47
  5. [Oracle][ADO_QRY] Récupérer le code d'erreur
    Par Cryonie dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/06/2004, 13h18

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