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] Pb sur exception


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut [oracle 8i] [PL/SQL] Pb sur exception
    Bonjour, j'ai un petit problème que je ne comprends pas. Pourriez vous m'aider svp?
    J'ai ce code:

    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
    PROCEDURE (P1, P2, P3,...) IS
    .
    .
    EXCEPT1 EXCEPTION;
    BEGIN (PRINCIPAL)
     
       BEGIN (1)
           SELECT
       EXCEPTION
            WHEN OTHERS THEN
                 ....
       END;
     
       IF CONDITION1 THEN
           ...
           RAISE EXCEPT1;
       END IF;
     
       BEGIN(2)
            SELECT
       EXCEPTION
            WHEN OTHERS THEN
                 ....
       END;
     
    EXCEPTION
        WHEN EXCEPT1 THEN
             ....
        WHEN OTHERS THEN
             ....
    END;
    Lorsque l'exception EXCEPT1 est levée, il part vers le WHEN OTHERS du BEGIN(2).
    Est ce normal?
    Si c'est normal, quelle est la solution?

    Je vous remercie par avance pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Non ce n'est pas normal. Il doit aller dans when except1.

    Assures-toi que tes blocs begin end sont correctement définis (=qu'il ne manque pas un end à un moment donné).

  3. #3
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut
    ok je vérifie, merci

  4. #4
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut
    En fait j'ai l'impression que c'est le debugger de TOAD, qui délire !!

  5. #5
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut
    En fait non, ce cas se produit bien. J'ai bien vérifié les begin et les end.
    Mais en grattant, je me suis rendu compte de quelque chose.
    je suis dans la configuration suivante:

    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
    PROCEDURE (P1, P2, P3,...) IS
    .
    .
    EXCEPT1 EXCEPTION;
    BEGIN (PRINCIPAL)
       A := NULL;
       B := NULL;
       PKG_X.C := NULL;
       RAISE  EXCEPT1;
       BEGIN (1)
           SELECT
       EXCEPTION
            WHEN OTHERS THEN
                 ....
       END;
    
    EXCEPTION
        WHEN EXCEPT1 THEN
             ....
        WHEN OTHERS THEN
             ....
    END;
    Je pars dans le WHEN OTHERS de BEGIN(1).
    Si j'enlève le WHEN OTHERS de BEGIN(1), je vais dans EXCEPT1

    Je change et je suis dans cette config:

    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
    PROCEDURE (P1, P2, P3,...) IS
    .
    .
    EXCEPT1 EXCEPTION;
    BEGIN (PRINCIPAL)
       A := NULL;
       B := NULL;
       RAISE  EXCEPT1;
       PKG_X.C := NULL;
    
       BEGIN (1)
           SELECT
       EXCEPTION
            WHEN OTHERS THEN
                 ....
       END;
    
    EXCEPTION
        WHEN EXCEPT1 THEN
             ....
        WHEN OTHERS THEN
             ....
    END;
    Je vais dans EXCEPT1 de l'exception générale.
    Là j'en peux plus, j'abandonne...
    Sauf si quelqu'un comprend mon pb, et me donne une solution.

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Bonjour,

    ce comportement semble tout à fait normal.
    Tu place Ton when other avant ton when except1.
    Tu ne peux donc jamais le raiser (le except1).
    La bonne syntaxe devrait être:

    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
     
    PROCEDURE (P1, P2, P3,...) IS
    .
    .
    EXCEPT1 EXCEPTION;
    BEGIN (PRINCIPAL)
       A := NULL;
       B := NULL;
       RAISE  EXCEPT1;
       PKG_X.C := NULL;
     
       BEGIN (1)
           SELECT
       EXCEPTION
        WHEN EXCEPT1 THEN
             ....
        WHEN OTHERS THEN
       END;
     
     
             ....
    END;

Discussions similaires

  1. [Oracle 8i][PL/SQL] requetes, SQLERRM & EXCEPTION
    Par Bahan dans le forum Oracle
    Réponses: 5
    Dernier message: 04/10/2007, 17h11
  2. [Oracle 8i - PL/SQL] Utilisation des exceptions
    Par Bahan dans le forum Oracle
    Réponses: 3
    Dernier message: 28/08/2006, 16h24
  3. [Oracle 9i] Traitement SQL sur une table
    Par Requin15 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 02/06/2006, 09h56
  4. Réponses: 3
    Dernier message: 26/05/2006, 00h06
  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