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 :

problème avec dbms_output.put_line


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 20
    Points
    20
    Par défaut problème avec dbms_output.put_line
    Bonjour,

    Je suis étudiant et je dois réaliser un TP sur oracle.

    Je bloque sévèrement sur une question qui est la suivante:

    Modifier la procédure donner_bonus afin de lever une erreur d’application lorsque l’identifiant de l’internaute passé en paramètre est invalide.


    Voici ma procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE PROCEDURE donner_bonus  
              ( le_i_id IN internaute.i_id%TYPE,  
                le_nb_bonus IN NUMBER DEFAULT 10 ) AS 
    BEGIN 
        UPDATE  INTERNAUTE I 
        SET     I.I_NB_BONUS = le_nb_bonus 
        WHERE   I.I_ID = le_i_id ;
    EXCEPTION 
        WHEN NO_DATA_FOUND THEN 
        dbms_output.put_line('test blabla');
    END; 
    Quand j'éxécute comme ceci:

    EXECUTE donner_bonus('Dupond@gmail.com', 20)

    Il m'affiche simplement "procèdure terminée avec succès... Je voudrais qu'il m'affiche mon message "test blabla".

    Voilà près de 2h qu'on bloque dessus avec mes camarade !

  2. #2
    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
    Avant de lancer votre exécution (sous SqlPlus je suppose), tapez ceci:


  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    Merci de votre réponse. Malheureusement ça ne change rien :/

    C'est à dire que il ne m'affiche toujours pas mon erreur :/

  4. #4
    Membre averti Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Points : 442
    Points
    442
    Par défaut
    Un UPDATE ne génère jamais d'exception NO_DATA_FOUND; il n'y a que les SELECT...INTO... qui font ça.
    Par contre, après un UPDATE on peut accéder à la variable SQL%ROWCOUNT qui contient le nombre d'enregistrement traités par cet ordre UPDATE.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    Ah ok d'accord. merci beaucoup pour cette info précieuse.

  6. #6
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,

    Regardez l'énoncé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Modifier la procédure donner_bonus afin de lever une erreur d’application lorsque l’identifiant de l’internaute passé en paramètre est invalide.
    Par exemple ca pourrait supposer que l'on mette un varchar au lieu d'un number

    En adaptant cet exemple suivant tu pourras avoir des idées de réponses...



    Code sql : 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
    vErrMajMaTable exception; 
    vErrNum        exception;
    PRAGMA EXCEPTION_INIT (vErrNum, -01722);
    begin
          update emp
          set sal = 1000000
          where empno = 'DIDI'; ---
          if sql%notfound then
                  RAISE vErrMajMaTable;
          end if;
    EXCEPTION
        WHEN vErrMajMaTable THEN
            dbms_output.put_line('Pas d''employe avec ce NUMERO ...');
        WHEN vErrNum THEN
             raise_application_error(-20001,'Veuillez saisir un numero existant');
    end;
    /
     
    declare
    *
    ERREUR Ó la ligne 1 :
    ORA-20001: Veuillez saisir un numero existant
    ORA-06512: Ó ligne 17

    et ce lien

    http://www.developpez.net/forums/d20...ute-immediate/

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 21
    Points : 30
    Points
    30
    Par défaut when others then ....
    Bonjour,
    mieux d'ajouter dans le bloc de l'exception la clause :
    when others then ....................//pour traiter les exceptions inattendus

    Salutations
    khalid

  8. #8
    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 khalid_montreal Voir le message
    Bonjour,
    mieux d'ajouter dans le bloc de l'exception la clause :
    when others then ....................//pour traiter les exceptions inattendus

    Salutations
    khalid
    Mieux NON

  9. #9
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    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 822
    Points : 6 446
    Points
    6 446
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Citation Envoyé par khalid_montreal Voir le message
    Bonjour,
    mieux d'ajouter dans le bloc de l'exception la clause :
    when others then ....................//pour traiter les exceptions inattendus

    Salutations
    khalid
    Je ne suis pas d'accord avec celà car:
    - comment traiter une exception 'inattendue' ? Par définition, on ne l'attends pas, donc on ne sait pas quoi en faire. Il faut retourner l'exception à l'utilisateur pour qu'il puis contacter l'admin.
    - le' when others' va masque le numéro de ligne où l'erreur s'est produite. Donc plus difficile à corriger.
    Cordialement,
    Franck.

Discussions similaires

  1. Problème avec dbms_output.put_line
    Par alex_972 dans le forum PL/SQL
    Réponses: 15
    Dernier message: 03/10/2011, 11h17
  2. Problème avec DBMS_OUTPUT
    Par pepitoluna dans le forum Sql Developer
    Réponses: 1
    Dernier message: 16/01/2011, 15h43
  3. problème avec dbms_output.put_line
    Par bensabdel dans le forum PL/SQL
    Réponses: 2
    Dernier message: 19/05/2009, 15h34
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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