Bonjour,

J'ai testé avec SQL Command de APEX 3.1 ces commandes, qui me permettent d'obtenir pour la date de la veille la pluviométrie en interrogeant une table adéquate.

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
WITH RAINFALL AS
(
	SELECT  DATE1	RAINFALLDATE,
    		VALEUR	VALUE
  	FROM	EVV_STPL
  	WHERE	CLEF_VAR	= 4723
  	AND	TO_DATE(DATE1, 'DD/MM/YYYY') = TO_DATE(sysdate-1, 'DD/MM/YYYY')
  )
 
	SELECT	  SUM (TOTO) 		CUMUL
  	FROM      (
		    SELECT  TRUNC (RAINFALLDATE)	AS datte,
      		    	    VALUE,
      			    LEAD (VALUE) OVER ( PARTITION BY  TRUNC (RAINFALLDATE) 
			    	 	      	ORDER BY      RAINFALLDATE
					      ) - VALUE		AS TOTO
    		    FROM    RAINFALL
    		  )
  	WHERE 	  TOTO	>= 0
  	GROUP BY  datte
J'obtiens bien ce que je veux, mais maintenant je veux transformer cela en fonction.

Donc j'ai créé cette fonction :

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
create or replace function "CALC_PLUVIO" (clef_var in NUMBER)
return number
is
stmt number;
 
BEGIN
 
SELECT	  SUM (TOTO)  	INTO	CUMUL
  	FROM      (
		    SELECT  TRUNC (RAINFALLDATE)	AS datte,
      		    	    VALUE,
      			    LEAD (VALUE) OVER ( PARTITION BY  TRUNC (RAINFALLDATE) 
			    	 	      	ORDER BY      RAINFALLDATE
					      ) - VALUE		AS TOTO
    		    FROM    RAINFALL
    		  )
  	WHERE 	  TOTO	>= 0
  	GROUP BY  datte
 
WITH RAINFALL AS
(
	SELECT  DATE1	RAINFALLDATE,
    		VALEUR	VALUE
  	FROM	EVV_STPL
  	WHERE	CLEF_VAR	= clef_var
  	AND	TO_DATE(DATE1) = TO_DATE(sysdate-1)
  );
RETURN CUMUL;
END;
et là ça ne fonctionne plus, :
Compilation failed,line 18 (10:55:34)
PL/SQL: ORA-00933: la commande SQL ne se termine pas correctementCompilation failed,line 7 (10:55:34)
PL/SQL: SQL Statement ignored
Je ne dois pas être très loin de la solution, que je ne vois pas.