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 :

procedure pl/sql, traitement des exceptions


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 13
    Points
    13
    Par défaut procedure pl/sql, traitement des exceptions
    bonsoir a tous ,
    j'ai un petit probleme au niveau d'une procedure, je precise que je suis débutante
    j'essaye en fait de chercher une personne a partir d'une procedure
    voila 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
     
    (champ IN VARCHAR2 DEFAULT  NULL)
     
     as
     
    cursor c_Recherche is select nom_per from Table_Personne; 
    nbpers NUMBER(3);
    aucun_personne EXCEPTION;
    c1 c_Recherche%rowtype;
     
    begin
     
    --compte les personnes
    select COUNT(*) into nbpers from Table_Personne;
    --si pas de personne, exception
    if nbpers = 0 then
    RAISE aucun_personne;
    end if;
    --Acces sequentiel a la table Table_Personne 
    for c1 in c_Recherche loop
    htp.prn('NOM :'||c1.nom_per ||'</br>' 
    );
    end loop;
     
    exception
    when aucun_personne then
        htp.prn('ya pas d'enregistrement' 
    );
     
    end;
    malhereusement ca me genere un message d'erreur
    surement une erreur de syntaxe ! mais je vois pas ce que c'est si y'a quelqu'un qui peut m'aider svp
    merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    exception
    when aucun_personne then
        htp.prn('ya pas d''enregistrement' 
    );
    Pour mettre un apostrophe dans une chaine, il faut mettre deux quotes.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je ne vois pas l'intérêt de tester si tu as des personnes puisque s'il n'y en a pas, ton curseur ne fera rien de toute façon...

    J'imagine que c'est pour tester des choses, parce que sinon, ta procédure est bien complexe pour pas grand chose.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    non si y'a pas denregistrement j'ai juste un message d'erreur et pas une page vide !

  5. #5
    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
    Citation Envoyé par felosa Voir le message
    j'ai juste un message d'erreur
    Et je suppose qu'il faut qu'on le devine ?

  6. #6
    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
    ouais encore un jeu où faut lire dans les pensées du noyau Oracle à distance

  7. #7
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Dangereux le NUMBER(3) s'il y a plus de 999 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nbpers NUMBER(3);
    SELECT COUNT(*) INTO nbpers FROM Table_Personne;
    Pour tester moi je préfère un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    v NUMBER;
    BEGIN
    SELECT 1 INTO v FROM Table_Personne WHERE ROWNUM=1;
    EXCEPTION WHEN NO_DATA_FOUND THEN RAISE aucun_personne; END;

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Et puis simplifions un peu toutes ces déclarations inutiles
    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
    CREATE OR REPLACE PROCEDURE AFFICHE_PERSONNE(champ IN VARCHAR2 DEFAULT  NULL)
    IS
       nbpers NUMBER := 0;
    BEGIN 
    	--Acces sequentiel a la table Table_Personne 
    	FOR c1 IN (SELECT nom_per FROM Table_Personne)
    	LOOP
    	   nbpers := nbpers + 1;
    	   htp.prn('NOM :'|| c1.nom_per ||'</br>');
    	END LOOP;
     
    	IF nbpers = 0
    	THEN
    	    htp.prn('ya pas d''enregistrement');
     	END IF;
    END;

Discussions similaires

  1. PL/SQL: gestion des exceptions
    Par elpibe dans le forum PL/SQL
    Réponses: 5
    Dernier message: 16/02/2007, 12h57
  2. [PL/SQL] gestion des exceptions - probleme
    Par etoileDesNeiges dans le forum Administration
    Réponses: 6
    Dernier message: 11/01/2007, 18h13
  3. Réponses: 5
    Dernier message: 08/01/2007, 15h58
  4. [Oracle 8i - PL/SQL] Utilisation des exceptions
    Par Bahan dans le forum Oracle
    Réponses: 3
    Dernier message: 28/08/2006, 17h24
  5. [Exceptions] Système de traitement des exceptions
    Par jenesuispasunrobot dans le forum Langage
    Réponses: 5
    Dernier message: 07/12/2005, 12h09

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