Bonjour,
Je voulais tester une fonction (sous oracle11g) qui fait le calcul de matricule des nouveaux recrus sous delphi 2010 :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part select get_matricule (to_date('10/10/1960','dd/mm/yyyy') from dual;
le code de la fonction est le suivant :
Code sql : 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 create or replace function get_matricule (date_naiss date ) return number is datN date; AN number; mat number; nbr number; BEGIN datN:= date_NAISS ; AN:= to_number(substr(to_char(datN),-2,2)); -- nbr:= :new.matricule; select nvl(max(matricule),0) into mat from v_agent where mod(matricule,100)=AN and( trunc( matricule / 1000) < 60 ) ; if mat =0 then nbr:= to_number('1'|| trim(to_char(AN,'00')) ); else nbr:= to_number(to_char(trunc(mat/100)+1)||to_char(AN)); end if; return( nbr); end get_matricule ;
Le problème est que quand je l'exécute à partir de delphi :
- quand j'utilise le fournisseur Microsoft for oracle , le résultat renvoyé est correct
-quand j'utilise le fournisseur oracle ole db(client 11g) , il renvoie toujours le resultat 100
mais quand je le fais sur sqlplus ou sqlpdevelopper il me renvoie le resultat correct.
Merci
Partager