Bonjour,

Je travaille sur oracle 11g, quand j'exécute la requête ci-dessous, avec fournisseur Mircosoft for oracle et oracle provider for ole db j'obtiens deux résultats différents :

select to_char( get_jour_ouvrable_mat( 980,to_date('31/05/2017','dd/mm/yyyy' ) ,to_date('31/05/2017','dd/mm/yyyy' )+1 ) ) vv from dual

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
get_jour_ouvrable_mat(mat number , dt_deb  date, dt_reprise  date) return number is v_nb  number;
cpt number;
date_rep date;
date_debut date ;
ouv number ;
ven_dim number ; 
jour_sem  number; 
begin
ouv := get_jour_ouvrable(dt_deb,dt_reprise) ;
select   a.type_week_end into ven_dim from tservices a
where a.code  = get_structure_agent(mat, sysdate) ;
if ven_dim = 0 then return(ouv)  ; 
end if ; 
date_debut := dt_deb ;
cpt := 0 ;
while date_debut < dt_reprise loop
select to_char(date_debut,'D') into jour_sem  from dual;
if ( to_char(date_debut,'dd/mm') <> '01/01' )  and   jour_sem <> 6 and  jour_sem <> 7  then cpt := cpt + 1 ; 
  end if ;  
  date_debut := date_debut + 1 ;   
end loop;
return(cpt) ;
exception
when others
then return(0);
end get_jour_ouvrable_mat ;