
La FAQ de PostgreSQLConsultez toutes les FAQ
Nombre d'auteurs : 7, nombre de questions : 51, dernière mise à jour : 8 juillet 2009
Sommaire→Syntaxe SQL et structure de données→Procédures stockéesSi la fonction renvoi un type "simple" (genre integer, text, ...) ou meme rien:
SELECT maprocedurestockee(eventuellement_des_params);
Si la fonction retourne des enregistrements : - La fonction retourne un type record :
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
SELECT * FROM exemple_proc1('92') AS (codeinsee char(5));
2eme cas, on precise le type au lieu d'un record:
CREATE TYPE typetestproc AS (codeinsee char(5));
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 !
SELECT * FROM exemple_proc2('92')



