Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels 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 31/03/2006, 16h31   #1
Invité de passage
 
Inscription : juin 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 4
Points : 2
Points : 2
Par défaut [PgAdmin 3]Procédure stockée

Bonjour, je viens de découvrir PostGré et j'aurais bien aimé pouvoir utiliser les procédures stockées. Voila mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE FUNCTION ps_connexion(IN mdp "varchar", IN service int8, IN "log_in" "varchar", OUT resultat record) AS
$BODY$
BEGIN
rec RECORD
FOR rec IN SELECT * FROM TblConnexion WHERE IDService=mdp 
AND Identifiant=log_in AND motdepasse=mdp
LOOP
	RETURN NEXT rec;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION ps_connexion("varchar", int8, "varchar", record) OWNER TO "user";
Quand je veux la valider PgAdmin 3, me dit : "ERROR : plpgsql functions cannot take type record
CONTEXTE : compile of PL/pgSQL function "ps_connexion" near line 0
thriller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 17h08   #2
Membre du Club
 
Inscription : octobre 2002
Messages : 153
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 153
Points : 40
Points : 40
Le problème c'est que tu ne précises pas que ta fonction renvoie des enregistrements (records). Ici, puisque tu sélectionnes toutes les colonnes de TblConnexion tu peux dire que tu renvoies un ensemble d'enregistrements de cette table même.

Essaie ça pour la procédure stockée :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 
CREATE FUNCTION ps_connexion(IN mdp "varchar", IN service int8, IN "log_in" "varchar") RETURNS SETOF TblConnexion AS
$$
DECLARE
rec RECORD
 
BEGIN
 
FOR rec IN SELECT * FROM TblConnexion WHERE IDService=mdp
AND Identifiant=log_in AND motdepasse=mdp
LOOP
   RETURN NEXT rec;
END LOOP;
 
RETURN;
 
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
et aps tu appelles ta procédure comme ça :

select * from ps_connexion(p1,p2,p3);

où p1,p2,p3 sont tes paramètres.
sylsau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2006, 14h11   #3
Invité de passage
 
Inscription : juin 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 4
Points : 2
Points : 2
Merci, ca fonctionne parfaitement grâce à toi
J'ai juste du rajouter un ; et modifier une variable du code que tu m'as donner
thriller est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h43.


 
 
 
 
Partenaires

Hébergement Web