Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2007, 18h43   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 24
Points : 3
Points : 3
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 :
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.
felosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 18h52   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Code :
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.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 18h55   #3
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
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.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 19h55   #4
Invité de passage
 
Inscription : décembre 2007
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 24
Points : 3
Points : 3
non si y'a pas denregistrement j'ai juste un message d'erreur et pas une page vide !
felosa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h12   #5
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
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 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par felosa Voir le message
j'ai juste un message d'erreur
Et je suppose qu'il faut qu'on le devine ?
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h16   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
ouais encore un jeu où faut lire dans les pensées du noyau Oracle à distance
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h37   #7
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Dangereux le NUMBER(3) s'il y a plus de 999 lignes
Code :
1
2
nbpers NUMBER(3);
SELECT COUNT(*) INTO nbpers FROM Table_Personne;
Pour tester moi je préfère un
Code :
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;
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h44   #8
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 215
Points : 4 215
Et puis simplifions un peu toutes ces déclarations inutiles
Code :
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;
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h25.


 
 
 
 
Partenaires

Hébergement Web