Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
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 08/05/2011, 15h46   #1
Invité de passage
 
Étudiant
Inscription : mai 2011
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 6
Points : 2
Points : 2
Par défaut affichage de plusieurs ligne

Bonjour,
je débute vraiment est donc excusé moi si la question est bête mais j'ai cherché partout et je n'ai pas trouvé. Voici mon problème:

je dois créer une fonction consultation() qui révèle au médecin les symptomes visible du patient selon sa compétence (pour l'instant je n'en teste qu'une seule).

voici ce que j'ai fait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE OR REPLACE FUNCTION consultation( medecin medecins.matricule%TYPE,  patient contamination.id_patient%TYPE)
	returns text AS $$
	DECLARE 
		symptomevisible symptomes.nom_sympt%TYPE;
		competence medecins.type%TYPE;
	BEGIN
		SELECT type INTO competence FROM medecins WHERE matricule=medecin;	
		IF competence='referent'
        	THEN
        		FOR symptomevisible IN 
        		SELECT nom_sympt FROM symptomes WHERE id_sympt IN ((SELECT id_sympt FROM maladie_symptomatique WHERE nom_maladie IN (SELECT nom_maladie FROM contamination WHERE id_patient=patient)))
        		LOOP 
        			RETURN symptomevisible;
        		END LOOP;
        	end IF;
	END;
$$ LANGUAGE PLPGSQL;
mais ça ne fonctionne pas:

en appelant ma fonction j'obtient:
consultation
----------------------
presence de comedons
(1 row)



alors que les symptomes du patients sont:
nom_sympt
---------------------------
presence de comedons
presence de points blancs
presence de papules
presence de de pustules
(4 rows)

Comment faire pour faire afficher les 4 symptomes, je fais une boucle mais elle ne tourne pas.
Pourriez vous m'aider??? S'il vous plait!!!

merci d'avance
pitifarfadet974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 14h44   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
Si cette fonction est supposée renvoyer plusieurs lignes de résultat, il faut la déclarer en RETURNS SETOF text et non en RETURNS text.
Il faut également utiliser RETURN NEXT dans la boucle pour constituer progressivement le jeu de résultat ligne par ligne.
Consulter la doc de plpgsql pour plus de détails et des exemples.
estofilo 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 12h53.


 
 
 
 
Partenaires

Hébergement Web