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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
CREATE OR REPLACE FUNCTION UneFonction (UnParam IN NUMBER)
RETURN UnType
IS
l_result UnType;
v_result_1 VARCHAR2 (255);
v_result_2 VARCHAR2 (255);
v_result_3 VARCHAR2 (255);
v_result_4 VARCHAR2 (255);
v_result_5 VARCHAR2 (255);
v_result_6 VARCHAR2 (255);
v_result_7 VARCHAR2 (255);
v_result_8 VARCHAR2 (255);
v_result_9 VARCHAR2 (255);
v_result_10 VARCHAR2 (255);
BEGIN
FOR my_cur IN (SELECT a.field1, a.field2
, MIN (a.field3) cur_result_1/*le traitement sur les champs est en réalité plus complexe, mais pas utile de détailler */
, MIN (a.field4) cur_result_2
, MIN (a.field5) cur_result_3
, MIN (a.field6) cur_result_4
, MIN (a.field7) cur_result_5
, MIN (a.field8) cur_result_6
, MIN (a.field9) cur_result_7
, MIN (a.field10) cur_result_8
, MIN (a.field11) cur_result_9
, MIN (a.field12) cur_result_10
FROM (SELECT aa.field1, aa.field2 --, etc, autres champs
FROM UneVue aa
WHERE aa.field1 = UnParam
/*autres conditions et traitements...
*/) a
GROUP BY a.field1, a.field2
ORDER BY a.field2)
LOOP
IF my_cur.field2 = 0
THEN
v_result_1 := my_cur.cur_result_1;
v_result_2 := my_cur.cur_result_2;
v_result_3 := my_cur.cur_result_3;
v_result_4 := my_cur.cur_result_4;
v_result_5 := my_cur.cur_result_5;
v_result_6 := my_cur.cur_result_6;
v_result_7 := my_cur.cur_result_7;
v_result_8 := my_cur.cur_result_8;
v_result_9 := my_cur.cur_result_9;
v_result_10 := my_cur.cur_result_10;
ELSE
v_result_1 := v_result_1 || CHR (13) || CHR (10) || my_cur.cur_result_1;
v_result_2 := v_result_2 || CHR (13) || CHR (10) || my_cur.cur_result_2;
v_result_3 := v_result_3 || CHR (13) || CHR (10) || my_cur.cur_result_3;
v_result_4 := v_result_4 || CHR (13) || CHR (10) || my_cur.cur_result_4;
v_result_5 := v_result_5 || CHR (13) || CHR (10) || my_cur.cur_result_5;
v_result_6 := v_result_6 || CHR (13) || CHR (10) || my_cur.cur_result_6;
v_result_7 := v_result_7 || CHR (13) || CHR (10) || my_cur.cur_result_7;
v_result_8 := v_result_8 || CHR (13) || CHR (10) || my_cur.cur_result_8;
v_result_9 := v_result_9 || CHR (13) || CHR (10) || my_cur.cur_result_9;
v_result_10 := v_result_10 || CHR (13) || CHR (10) || my_cur.cur_result_10;
END IF;
END LOOP;
l_result :=
UnType (v_result_1
, v_result_2
, v_result_3
, v_result_4
, v_result_5
, v_result_6
, v_result_7
, v_result_8
, v_result_9
, v_result_10
);
RETURN l_result;
END;
/ |
Partager