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; |
Partager