Je suis sous Oracle 9.2.0.4 et j'ai une fonction :

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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
alter session set nls_language = 'FRENCH'
Comme je veux pas casser le paramétrage de la base je le fais en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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