IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Résultat différent avec deux fournisseurs différents


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut Résultat différent avec deux fournisseurs différents
    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 ;

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Il y a un to_char(date_debut,'D') qui dépend du NLS_TERRITORY de la session.
    Donc 2 sessions paramétrées différemment obtiendront un résultat différent :
    En France, par exemple, lundi est le 1er jour de la semaine, aux USA, par exemple, c'est dimanche.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 99
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    qu'est ce que vous me conseillez de faire?.

    Merci

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Tout dépend du besoin.

    Si le besoin est d'être en mode français tout le temps :

    Modifier la session avant de travailler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set nls_territory='FRANCE'
    ou gérer le NLS_LANG

    Tester le nom du jour de la semaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_char(sysdate,'fmDay','nls_date_language = ''french''')
    Où utiliser la formule suivante pour récupérer le numéro du jour de la semaine indépendamment du paramètre NLS :
    https://community.oracle.com/thread/2207756
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1 + TRUNC (sysdate) - TRUNC (sysdate, 'IW')

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/05/2011, 10h48
  2. Etat avec deux sources différentes
    Par Pigwi dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/06/2007, 09h43
  3. Datagrid et combobox avec deux datasource différents
    Par RaelRiaK dans le forum VB.NET
    Réponses: 9
    Dernier message: 07/02/2007, 09h20
  4. Ecrire dans une CEdit avec deux Couleurs Différentes
    Par yoyothebest dans le forum MFC
    Réponses: 1
    Dernier message: 25/03/2006, 19h09
  5. Réponses: 8
    Dernier message: 13/03/2006, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo