FAQ PostgreSQLConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 51, dernière mise à jour : 9 septembre 2005  Ajouter une question

 

Cette FAQ a été réalisée à partir des contributions des membres du forum PostgreSQL de www.developpez.com.

Si vous désirez contribuer à l'amélioration de cette FAQ, veuillez contacter le responsable.
Commentez


SommaireSyntaxe SQL et structure de donnéesProcédures stockées (1)
précédent sommaire suivant
 

Si la fonction renvoie un type "simple" (genre integer, text, ...) ou même rien :

Code sql :
SELECT maprocedurestockee(eventuellement_des_params);
Si la fonction retourne des enregistrements :
- La fonction retourne un type record :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  
CREATE OR REPLACE FUNCTION exemple_proc1(bpchar) RETURNS SETOF record AS 
$BODY$ 
DECLARE 
 rec RECORD; 
BEGIN 
 FOR rec IN SELECT codeinsee FROM t_communes WHERE dep=$1 ORDER BY  codeinsee 
 LOOP 
   RETURN NEXT rec ; 
 END LOOP ; 
 RETURN ; 
end; 
$BODY$ 
LANGUAGE 'plpgsql' VOLATILE;
Dans ce cas, lors du SELECT il faut préciser les sorties :

Code sql :
SELECT * FROM exemple_proc1('92') AS (codeinsee char(5));
2ème cas, on précise le type au lieu d'un record :

Code sql :
CREATE TYPE typetestproc AS (codeinsee char(5));
Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  
CREATE OR REPLACE FUNCTION exemple_proc2(bpchar) RETURNS SETOF typetestproc AS 
$BODY$ 
DECLARE 
 rec typetestproc; 
BEGIN 
 FOR rec IN SELECT codeinsee FROM t_communes WHERE dep=$1 ORDER BY  codeinsee 
 LOOP 
   RETURN NEXT rec ; 
 END LOOP ; 
 RETURN ; 
end; 
$BODY$ 
LANGUAGE 'plpgsql' VOLATILE;
Maintenant plus besoin de spécifier les colonnes, ca marche comme une table standard !

Code sql :
SELECT * FROM exemple_proc2('92')
À noter qu'une fonction peut aussi retourner un type TABLE qui facilite également grandement l'écriture de la fonction.

Mis à jour le 13 mai 2005 hpalpha

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula