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 :

EXCEPTION - comment tester la valeur du SQLCODE ?


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut EXCEPTION - comment tester la valeur du SQLCODE ?
    Bonjour,

    J'aimerai savoir s'il est possible de trapper la valeur du SQLCODE dans la clause EXCEPTION ?

    Dans tous les exemples que j'ai pu trouver, on teste dans la clause EXCEPTION le nom de l'erreur et non la valeur du SQLCODE. Alors comment faire quand on ne connaît pas le nom associé à une erreur ?

    Merci d'avance !!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Bien sûr, tu peux la récupérer dans la clause EXCEPTION, de la même manière que SQLERRM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    EXCEPTION
       WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLCODE || ' - '|| SQLERRM, 1, 255))
    Perso, je fais un SUBSTR à 255 pour éviter de faire planter le DBMS_OUTPUT du bloc d'exception au cas où le SQLERRM est un peu long, ce serait un comble !

  3. #3
    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 peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    EXCEPTION
       WHEN OTHERS THEN
            dbms_output.put_line(SQLCODE || ' ' || SQLERRM);
    Cela t'affichera le message d'erreur

    Par contre, si tu veux faire un traitement spécial sur une erreur donnée, il faut que tu définisses une exception ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DECLARE
    -- définie une exception
    MonException EXCEPTION;
    -- Associe une exception à un numéro d'erreur
    PRAGMA EXCEPTION_INIT (MonException, -60);
    BEGIN
       -- codes here
    EXCEPTION
       WHEN MonException THEN
          ...
    END;
    Dans cet exemple, je procède à un traitement spécial en cas de deadlock (ora0060)

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut
    Merci !!

    En fait, je voulais bien faire un traitement spécial sur une erreur donnée. Loyd, je vais essayer ta méthode.

    Encore merci

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

Discussions similaires

  1. [XL-2010] Dans une fonction, comment tester plusieurs valeurs d'une seule cellule
    Par yzf-r dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/08/2011, 11h09
  2. Réponses: 7
    Dernier message: 22/07/2009, 18h22
  3. [ASE 12.0.3] Comment tester les valeurs nulles (T-SQL)
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 7
    Dernier message: 02/01/2008, 09h07
  4. comment tester la valeur de l element pere
    Par ghostdog dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/03/2006, 11h27
  5. Comment tester la valeur nulle d'un TDateTime
    Par kolac dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2006, 18h09

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