Fonction recursive plante session
Bonjour
j'ai une table HD_MAT comme suit
CDMAT CDMATR
1 10
2 10
3 10
4 10
10 20
11 20
12 20
13 20
J'ai la fonction recusive suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| CREATE OR REPLACE FUNCTION TEST(p_cdmatr IN VARCHAR2) return number IS
TYPE TABLE_CDMAT IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;
var_tab_cdmat TABLE_CDMAT;
retour number;
BEGIN
SELECT CDMAT
BULK COLLECT
INTO var_tab_cdmat
FROM HD_MAT
WHERE CDMATR=p_cdmatr;
IF var_tab_cdmat.COUNT>0 THEN
FOR iCnt IN var_tab_cdmat.FIRST..var_tab_cdmat.LAST LOOP
dbms_output.put_line('LIGNE '||var_tab_cdmat(iCnt));
retour :=TEST(var_tab_cdmat(iCnt));
END LOOP;
END IF;
return 1;
END;
/ |
je l'appel comme suit
Code:
1 2 3 4 5 6 7
| declare
retour number;
begin
retour:=test('20');
dbms_output.put_line('FIN');
end;
/ |
normalement il devrait m'afficher
10
1
2
3
4
11
12
13
mais il affiche
10
10
10
10
10
10
10
10
10
...
...
à l'infini
quelqu'un peut m'aider
cordialement