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

Oracle Discussion :

[Oracle 8i][PL/SQL] requetes, SQLERRM & EXCEPTION


Sujet :

Oracle

  1. #1
    Membre régulier Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut [Oracle 8i][PL/SQL] requetes, SQLERRM & EXCEPTION
    Bonjour à toutes et à tous.

    J'ai un petit soucis de compréhension avec l'utilisation de SQLERRM.

    En gros, mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <requete insert>
    
    IF(SQL%FOUND) THEN
        vCrFonction := 1;
    ELSE
        RAISE vErrInsert;
    END IF
    Un peu plus loin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    EXCEPTION
        WHEN vErrInsert THEN
            vLibErreur := '[' ||SQLCODE||'] '||SQLERRM;
            Tracage de erreur
            RETURN -1;
    END MaFonction;
    En fait, je ne sais pas vraiment si mon SQLERRM va reprendre en plus de l'erreur qu'il y a eu dans la requete INSERT la requete elle-même. J'aimerais en effet tracer la requete si celle-ci a eu un soucis.

    NB : Imaginons que ma fonction ne contienne que cet insert et pas d'autres bouts de code, pensez-vous que j'ai d'autres cas d'exceptions à prévoir ? Pour plus de sécurité, ne vaut-il pas mieux que je mette un OTHERS dans mon bloc d'exceptions afin de parer au pire (comme par exemple table soudainement absente) ?

    Merci d'avance pour votre aide.

    Bahan
    Bats-toi de toutes tes forces tant que tu es en vie, et n'abandonne que quand tu es mort

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    SQLERRM va afficher le libellé de l'erreur Oracle associé à SQLCODE.
    Si vous voulez afficher autre chose, c'est à vous de le coder.

    Pour plus de sécurité, ne vaut-il pas mieux que je mette un OTHERS dans mon bloc d'exceptions afin de parer au pire (comme par exemple table soudainement absente) ?
    Oui.

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    SQLERRM affiche le message d'erreur que tu aurais sous SQL*Plus... la requête n'est pas incluse.

  4. #4
    Membre régulier Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut


    Donc c'est à moi de stocker ma requête dans une variable de type VARCHAR2.

    Bahan
    Bats-toi de toutes tes forces tant que tu es en vie, et n'abandonne que quand tu es mort

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 214
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    J'arrive à récupérer le code et le message de l'erreur, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-06502: PL/SQL: numeric OR value error: character TO number conversion error
    Mais j'aimerais pouvoir récupérer la suite, qui me donne notamment le numéro de ligne de l'erreur et + de détails.

    Est-ce que cela est possible ?

    D'avance merci

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Voir du coté de
    DBMS_UTILITY.FORMAT_ERROR_STACK et de
    DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
    ici
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/09/2006, 15h05
  2. [Oracle 8i][PL/SQL] Exceptions & Curseur
    Par Bahan dans le forum Oracle
    Réponses: 3
    Dernier message: 31/08/2006, 16h34
  3. [Oracle 8i - PL/SQL] Utilisation des exceptions
    Par Bahan dans le forum Oracle
    Réponses: 3
    Dernier message: 28/08/2006, 16h24
  4. [Oracle 9] concat et requêtes SQL
    Par marti dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/06/2006, 20h38
  5. Réponses: 2
    Dernier message: 08/11/2005, 10h38

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