Bonjour,

Ma procédure ne fonctionne pas mais je ne sais pas pourquoi. Je pense que le problème vient de la syntaxe...

Voilà ma procédure :

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
create or replace PROCEDURE DividendCalcul IS
DECLARE
	fDiv FLOAT;
	sLabel VARCHAR2(32);
 
	CURSOR data_cur IS SELECT r1.Label, r1.DIVIDEND_VALUE-r2.DIVIDEND_VALUE FROM (SELECT HISTO_INDEX.DIVIDEND_VALUE, INDEX_TABLE.LABEL, INDEX_TABLE.INDEX_ID FROM HISTO_INDEX, INDEX_TABLE WHERE HISTO_INDEX.INDEX_ID=INDEX_TABLE.INDEX_ID AND HISTO_INDEX.DATE_ID=(SELECT MAX(DATE_ID) FROM HISTO_INDEX) AND INDEX_TABLE.TYPE='Index' ORDER BY INDEX_TABLE.INDEX_ID) r1, (SELECT HISTO_INDEX.DIVIDEND_VALUE, INDEX_TABLE.LABEL, INDEX_TABLE.INDEX_ID FROM HISTO_INDEX, INDEX_TABLE WHERE HISTO_INDEX.INDEX_ID=INDEX_TABLE.INDEX_ID AND DATE_ID=(SELECT MAX(DATE_ID) FROM HISTO_INDEX WHERE HISTO_INDEX.DATE_ID NOT IN (SELECT MAX(DATE_ID) FROM HISTO_INDEX)) AND INDEX_TABLE.TYPE='Index' ORDER BY INDEX_TABLE.INDEX_ID) r2 WHERE r1.INDEX_ID=r2.INDEX_ID;
BEGIN
	OPEN data_cur;
	FETCH data_cur INTO sLabel, fDiv;
 
	UPDATE DIFF_TABLE SET DIFF_VALUE=fDiv WHERE LABEL=sLabel;
 
	EXIT WHEN data_cur%NOTFOUND;
 
	CLOSE data_cur;
END;