ORA-06519: Transaction autonome active detectée et annulée
Je suis sous Oracle 9.2.0.4 et j'ai une fonction :
Code:
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
|
FUNCTION FindDate(pDateEnt NUMBER, pPos NUMBER) RETURN NUMBER IS
vDate NUMBER(12);
MessErr VARCHAR2(512);
MessCode NUMBER;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
EXECUTE IMMEDIATE 'alter session set nls_language = ''FRENCH''';
SELECT TO_CHAR(TO_DATE(DECODE(TO_CHAR(TO_DATE(pDateEnt,'YYYYMMDDHH24MI'),'D'),'1',pDateEnt,
TO_CHAR(NEXT_DAY(to_date(pDateEnt,'YYYYMMDDHH24MI'),'LUNDI')-7,'YYYYMMDDHH24MI')),'YYYYMMDDHH24MI')+7*(pPos-1),'YYYYMMDD') || '0000'
INTO vDate
FROM DUAL;
RETURN vDate;
EXCEPTION
WHEN OTHERS THEN
....
END F_FindDate; |
Le but de cette fonction est de retourner le xéme LUNDI après la date en paramètre.
Comme je veux être indépendant du paramétrage de la base, je fais un
Code:
1 2
|
alter session set nls_language = 'FRENCH' |
Comme je veux pas casser le paramétrage de la base je le fais en
Code:
1 2
|
AUTONOMOUS TRANSACTION |
Jusque la ça va...
Le problème est que je prends aléatoirement une erreur ORA-06519. Et là je ne comprends plus rien...
Parce que d'une part, même si je suis bien dans une AUTONOMOUS TRANSATION, je ne fais aucune mise a jour et d'autre part parce que dans plus de 99% des cas cela passe sans erreur et seulement de temps en temps j'ai cette erreur ORA-06509.
Existe il une autre solution pour obtenir le même résultat (trouver LUNDI de manière indépendante de la base).
Avez vous une idée d'où vient cette erreur "aléatoire"
Merci