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 :

GESTION D'ERREURS dans un bloc plsql


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut GESTION D'ERREURS dans un bloc plsql
    voila on definit une variable exception (mon_exception) et dans le code plsql
    on fait appel a cette variable via ,il faut prévoir un traitement dans l'exception pour cette exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EXCEPTION
          WHEN mon_exception  THEN
           traitement de cette exception();
    end
    ça c 'est le fonctionnement normal . y'a t'il un autre moyen de quitter le code et d'exécuter l'exception sans passer par la définition d'une exception et de passer directement dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EXCEPTION
          WHEN others  THEN
           traitement ();
    end
    j'espère que c clair
    merci d'avance.

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Je pense que ce que tu cherches c'est raise_application_error qui renvoit une erreur avec un numéro et un message d'erreur.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par pachot Voir le message
    Bonjour,
    Je pense que ce que tu cherches c'est raise_application_error qui renvoit une erreur avec un numéro et un message d'erreur.
    Cordialement,
    Franck.
    merci pour ta réponse Franck mais c 'est pas car même avec raise_application_error tu doit declarer ton erreur et lui donner un numero d'erreur .

    moi je veux juste tomber dans le bloc d'exception dans le 'when others '
    une sorte de sortie qui force le code a allé dans l'exception sans pour autant
    chercher une exception précise dans le bloc exception et qui a été auparavant déclarer .

  4. #4
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par hoolako Voir le message
    merci pour ta réponse Franck mais c 'est pas car même avec raise_application_error tu doit declarer ton erreur et lui donner un numero d'erreur .

    ...
    Non, vous n'avez pas besoin de déclarer l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    Raise_Application_Error(-20000,'Mon erreur est arrivé');
    ...

  5. #5
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hoolako Voir le message
    moi je veux juste tomber dans le bloc d'exception dans le 'when others '
    une sorte de sortie qui force le code a allé dans l'exception sans pour autant
    chercher une exception précise dans le bloc exception et qui a été auparavant déclarer .
    C'est bien ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> l
      1  begin
      2  Raise_Application_Error(null,null);
      3  exception
      4  when others then dbms_output.put_line('...exception...');
      5* end;
    SQL> /
    ...exception...
    PL/SQL procedure successfully completed.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par pachot Voir le message
    C'est bien ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> l
      1  begin
      2  Raise_Application_Error(null,null);
      3  exception
      4  when others then dbms_output.put_line('...exception...');
      5* end;
    SQL> /
    ...exception...
    PL/SQL procedure successfully completed.
    Cordialement,
    Franck.
    Merci ça marche

  7. #7
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Disons que je préfère un numéro et un message explicite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    declare 
      l_err   number;
      l_msg   varchar2(100);
    begin
      Raise_Application_Error(Null,NULL);
    exception
      when others then 
        l_err := sqlcode;
        l_msg := sqlerrm;
        dbms_output.put_line('...exception...'||to_char(l_err)||'-'||l_msg);
    end;
     
    ..exception...-21000-ORA-21000: l'argument numéro d'erreur utilisé pour raise_application_error de 0 est hors limites

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    on peut meme faire juste un raise pour forcer l'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    begin
    ------
    ------
    if cdtion1 then
    raise;
    end if;
    exception
    when others then
    ----
    end;

  9. #9
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par hoolako Voir le message
    on peut meme faire juste un raise pour forcer l'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    begin
    ------
    ------
    if cdtion1 then
    raise;
    end if;
    exception
    when others then
    ----
    end;
    Vous est certain ?
    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
    28
    29
    30
    31
    32
    33
    34
     
    Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0 
    Connected as mni
     
    SQL> 
    SQL> begin
      2  --
      3    If true Then
      4      raise;
      5    End IF;
      6  --
      7  exception
      8    when others then
      9      null;
     10  end;
     11  /
     
    begin
    --
      If true Then
        raise;
      End IF;
    --
    exception
      when others then
        null;
    end;
     
    ORA-06550: Ligne 5, colonne 5 :
    PLS-00367: instruction RAISE sans nom d'exception doit être dans un module d'exception
    ORA-06550: Ligne 5, colonne 5 :
    PL/SQL: Statement ignored
     
    SQL>

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Vous est certain ?
    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
    28
    29
    30
    31
    32
    33
    34
     
    Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0 
    Connected as mni
     
    SQL> 
    SQL> begin
      2  --
      3    If true Then
      4      raise;
      5    End IF;
      6  --
      7  exception
      8    when others then
      9      null;
     10  end;
     11  /
     
    begin
    --
      If true Then
        raise;
      End IF;
    --
    exception
      when others then
        null;
    end;
     
    ORA-06550: Ligne 5, colonne 5 :
    PLS-00367: instruction RAISE sans nom d'exception doit être dans un module d'exception
    ORA-06550: Ligne 5, colonne 5 :
    PL/SQL: Statement ignored
     
    SQL>

    tout a fait en fait on peut utiliser raise dans l'exception pour propager l'exception au bloc superieur. milles excuses

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

Discussions similaires

  1. [AIX] Gestion des erreurs dans un script
    Par f-k-z dans le forum AIX
    Réponses: 2
    Dernier message: 17/07/2007, 08h45
  2. [vba-e] Gestion D'erreur Dans Un Inputbox
    Par KKshi666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/05/2007, 09h39
  3. Gestion des erreurs dans un TRIGGER
    Par SDU64 dans le forum DB2
    Réponses: 1
    Dernier message: 18/05/2006, 09h51
  4. Gestion d'erreur dans les procédure
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/01/2006, 12h02
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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