Bonjour,

J'ai un souci avec ma procédure, pour retourner des record.
Après des recherches sur le forum, j'ai vu qu'il fallait faire une boucle, j'ai donc transformé mon code comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
REATE OR REPLACE FUNCTION "public"."analyse_union_1" ("Debut" varchar, "Fin" varchar) RETURNS SETOF record AS
$body$
DECLARE
	rec RECORD;
BEGIN
TRUNCATE TABLE "Stat_AnalyseUnion1";
 
-- REQUETE ANALYSE FILTRE 1
    CREATE TEMPORARY TABLE "tempfiltre1" AS
	SELECT 
    	(SUBSTRING (sunocfe FROM 1 FOR 1) || sutyplia) AS nocfe,
    	(SUBSTRING(sudtcreat FROM 1 FOR 4) || ' ' || SUBSTRING (sudtcreat FROM 5 FOR 2)) AS temp_mois,
        sulieven, 
        COALESCE(codebassin, 'AUTRE') as codebassin
    FROM
    	"vuesuivi"
        LEFT JOIN geobassin
        ON (sucodpos || sucomm) =  commune
    WHERE
    	sulieven like '0%'
        AND ((sudtcreat >= $1)
        	and (sudtcreat <= $2)) ;
 
 
-- REQUETE ANALYSE 1     
FOR rec IN 
( SELECT
  	numero,
    libelle,
    typcfe,
    mois,
    design_bassin,
    count(sulieven) as nombre
FROM
	"Stat_ReqAnaPERIODE"
    LEFT JOIN tempfiltre1
    ON 	code_bassin = codebassin
    	AND code_evt = nocfe
        AND mois = temp_mois  
GROUP BY
	numero, libelle, typcfe,mois,design_bassin
HAVING 
	(numero = 1)
ORDER BY
	typcfe, mois, design_bassin  )
LOOP
   RETURN NEXT rec ;
 END LOOP ;
 RETURN ;
END;
 
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Le problème c'est que j'ai encore un message d'erreur lorsque je veux executer la procédure :
ERROR: wrong record type supplied in RETURN NEXT
CONTEXT: PL/pgSQL function "analyse_union_1" line 46 at return next
Je ne sais pas d'où peut venir mon erreur.
En fait, je veux tout simplement récupérer le résultat de mon SELECT

Merci de votre aide.