Je suis sous Oracle 9.2.0.4 et j'ai une fonction :
Le but de cette fonction est de retourner le xéme LUNDI après la date en paramètre.
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;
Comme je veux être indépendant du paramétrage de la base, je fais un
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 alter session set nls_language = 'FRENCH'
Jusque la ça va...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2AUTONOMOUS TRANSACTION
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
Partager