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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    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
    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 chevronné

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Avant de lancer votre exécution (sous SqlPlus je suppose), tapez ceci:


  3. #3
    Membre actif
    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
    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 chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    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 actif
    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
    Par défaut
    Ah ok d'accord. merci beaucoup pour cette info précieuse.

  6. #6
    Membre Expert 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
    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/

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