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 des Exceptions pour un SELECT


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 40
    Points
    40
    Par défaut Gestion des Exceptions pour un SELECT
    Bonjour,
    je dois gérer les Exceptions pour une requete comportant un SELECT contenant 2 paramètres (je lance la requête suivi des 2 paramètres depuis SQQLPLUS), quelles exceptions faut-il gérer? Je vous remercie d'avance pour votre réponse.

    Voici mon 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    /* Supprime le defilement des commandes d'un fichier de commandes */
    SET echo off
     
    /* Lors de la redefinition de variables d'environnement de SQLPLUS, supprime */
    /* l'affichage de l'ancienne, puis de la nouvelle valeur                     */
    SET showmode off
     
    SET heading off
     
    /* Supprime toutes les informations de formattages des donnees en sortie */
    SET pagesize 0
     
    /* Supprime l'affichage a l'écran du resultat des commandes executées à */
    /* partir d'un fichier*/
    SET termout off
     
    /* Supprime l'affichage du nombre d'enregistrements selectionnes */
    SET feedback off
     
    /* Supprime l'affichage des valeurs OLD et NEW selectionnees */
    set verify off
     
    spool test3.txt
     
     /* Requete SQL */
     
    SELECT		*
    FROM			        ASSIST
    WHERE			ASSIST.ENTITE LIKE '%&1%'
    AND				ASSIST.METIER LIKE '%&2%' 
    ;
     
    spool off
    SET verify ON
    SET feedback ON
    SET termout ON
    SET feedback ON
    SET heading ON
    SET showmode ON
    SET echo ON

  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
    Points : 3 609
    Points
    3 609
    Par défaut
    Tu ne peux gérer des exceptions que dans du PL/SQL.
    Là tu ne fais que tu sql.

    Merci de penser aux balises code et de ne pas multiplier les posts sur le même sujet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par plaineR Voir le message
    Tu ne peux gérer des exceptions que dans du PL/SQL.
    Là tu ne fais que tu sql.

    Merci de penser aux balises code et de ne pas multiplier les posts sur le même sujet.

    OK.
    Comment faut-il faire pour inserer du pl/sql dans ce code sql, j'ai rajouté begin, end, et exception, que faut il rajouter d'autre? Ca ne marche pas pour le moment....


    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    /* Supprime le defilement des commandes d'un fichier de commandes */
    SET echo off
     
    /* Lors de la redefinition de variables d'environnement de SQLPLUS, supprime */
    /* l'affichage de l'ancienne, puis de la nouvelle valeur                     */
    SET showmode off
     
    SET heading off
     
    /* Supprime toutes les informations de formattages des donnees en sortie */
    SET pagesize 0
     
    /* Supprime l'affichage a l'écran du resultat des commandes executées à */
    /* partir d'un fichier*/
    SET termout off
     
    /* Supprime l'affichage du nombre d'enregistrements selectionnes */
    SET feedback off
     
    /* Supprime l'affichage des valeurs OLD et NEW selectionnees */
    set verify off
     
    spool test3.txt
     
     /* Requete SQL */
    BEGIN
     
    SELECT		*
    FROM			YDA_ASSISTANCE2 ASSIST
    WHERE			ASSIST.ENTITE LIKE '%&1%'
    AND				ASSIST.METIER LIKE '%&2%' 
    ;
     
    EXCEPTION  
       WHEN NO_DATA_FOUND THEN  
         DBMS_OUTPUT.PUT_LINE ('..........');
     
       WHEN ZERO_DIVIDE THEN  
          DBMS_OUTPUT.PUT_LINE('..........');
     
       WHEN TOO_MANY_ROWS THEN  
          DBMS_OUTPUT.PUT_LINE('..........');
     
       WHEN OTHERS THEN  
          DBMS_OUTPUT.PUT_LINE('.......');
    END;  
     
    spool off
    SET verify ON
    SET feedback ON
    SET termout ON
    SET feedback ON
    SET heading ON
    SET showmode ON
    SET echo ON

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il manque l'instruction INTO et merci de penser aux balises CODE.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par orafrance Voir le message
    il manque l'instruction INTO et merci de penser aux balises CODE.
    OK merci pour l'info.
    Est-ce que je peux mettre le resultat d'un SELECT * dans une variable en utilisant INTO? Comment déclarer cette variable (entier, char....)?

    DECLARE
    resultat .....
    SELECT * INTO resultat
    FROM MATABLE

  6. #6
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Heu... combien de fois faut-il vous demander d'utiliser la balise code (bouton # dans l'éditeur de message) ?

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Vous aller finir par le faire baliser !

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous aller finir par le faire baliser !
    c'est bien le but !

  9. #9
    Membre averti Avatar de ouistitis
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 341
    Points
    341
    Par défaut
    Bonjour Le_novice.

    Tu peux effectivement utiliser une variable.

    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
    DECLARE 
     
       v_yda   YDA_ASSISTANCE2%ROWTYPE; 
     
    BEGIN
     
        SELECT  * 
        INTO    v_yda 
        FROM    YDA_ASSISTANCE2 ASSIST
        WHERE   ASSIST.ENTITE LIKE '%&1%'
        AND     ASSIST.METIER LIKE '%&2%' 
        ;
     
    EXCEPTION  
       WHEN NO_DATA_FOUND THEN  
         DBMS_OUTPUT.PUT_LINE ('..........');
     
       WHEN ZERO_DIVIDE THEN  
          DBMS_OUTPUT.PUT_LINE('..........');
     
       WHEN TOO_MANY_ROWS THEN  
          DBMS_OUTPUT.PUT_LINE('..........');
     
       WHEN OTHERS THEN  
          DBMS_OUTPUT.PUT_LINE('.......');
    END;
    Tu récupères ensuite les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_OUTPUT.PUT_LINE (v_yda.nom_du_champ);

  10. #10
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    sans les simple cote bien sûr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_OUTPUT.PUT_LINE (v_yda.nom_du_champ);

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par jsd03 Voir le message
    sans les simple cote bien sûr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_OUTPUT.PUT_LINE (v_yda.nom_du_champ);
    OK, je te remercie.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par le_novice Voir le message
    OK, je te remercie.
    Est-ce que la déclaration de la variable par %ROWTYPE permet d'avoir dans cette même variable plusieurs lignes extraites par le SELECT * ?

  13. #13
    Membre actif

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 109
    Points : 204
    Points
    204
    Par défaut
    salut
    %ROWTYPE référence à une ligne d'une table ou d'un curseur

  14. #14
    Membre averti Avatar de ouistitis
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 93
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par jsd03 Voir le message
    sans les simple cote bien sûr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_OUTPUT.PUT_LINE (v_yda.nom_du_champ);
    OK jsd03, je corrige.

    Le_novice.
    Le rowtype ramène juste toutes les colonnes de la table (ou de la structure déclarée dans un curseur, par exemple), mais pas toutes les lignes.

  15. #15
    Membre confirmé

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Vu que tu peux avoir plusieurs lignes en résultat, un curseur me paraît pertinent.
    Par exemple:
    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
    FOR mon_curseur IN (SELECT.....)
    LOOP
       BEGIN
          dbms_output.put_line(mon_curseur.champ1);
          dbms_output.put_line(mon_curseur.champ2);
       EXCEPTION
          WHEN EXCEPTION1 THEN
             traitement de exception 1
          WHEN EXCEPTION1 THEN
             traitement de exception 2
          ......
          WHEN OTHERS THEN
             ......
       END;
    END LOOP;

Discussions similaires

  1. Gestion des Exception WCF pour SilverLight
    Par OminiuS dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 16/09/2010, 11h36
  2. Gestion des Exceptions pour un SELECT
    Par BobDesign dans le forum SQL
    Réponses: 2
    Dernier message: 06/03/2009, 16h05
  3. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  4. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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