La FAQ de PostgreSQLConsultez toutes les FAQ

Nombre d'auteurs : 7, nombre de questions : 51, dernière mise à jour : 8 juillet 2009 

 
OuvrirSommaireSyntaxe SQL et structure de donnéesProcédures stockées

Si la fonction renvoi un type "simple" (genre integer, text, ...) ou meme rien:

 
Sélectionnez

SELECT maprocedurestockee(eventuellement_des_params); 

Si la fonction retourne des enregistrements : - La fonction retourne un type record :

 
Sélectionnez

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

 
Sélectionnez

SELECT * FROM exemple_proc1('92') AS (codeinsee char(5));

2eme cas, on precise le type au lieu d'un record:

 
Sélectionnez

CREATE TYPE typetestproc AS (codeinsee char(5));
 
Sélectionnez

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 champs, ca marche comme une table standard !

 
Sélectionnez

SELECT * FROM exemple_proc2('92')
Créé le 2005-05-13  par Damien Griessinger (HpAlpha)
  

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 © 2009 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. Cette page est déposée.