2009-01-15 8 views
11

J'ai défini le NLS_DATE_FORMAT global sur Oracle XE 10.2 comme suit:Comment changer NLS_DATE_FORMAT par défaut pour le client Oracle jdbc

alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile; 

Lors de la connexion sur Windows, les clients la remplacer par session de format spécifique, donc je dois exécuter cette ligne au début de chaque session:

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; 

Cependant, j'ai un code personnalisé que je ne peux pas changer (code jdbc, en utilisant ojdbc14.jar), donc je ne peux pas exécuter cette ligne lors de la réception la connexion. Est-il possible de changer la valeur par défaut de nls_date_format pour toutes les connexions jdbc? Peut-être ajouter quelque chose à la chaîne de connexion, ou une variable d'environnement que je peux utiliser? Soit dit en passant, sqlplus et sqldeveloper outrepassent également le format du serveur, mais j'ai trouvé comment changer leurs valeurs par défaut, donc le problème est seulement avec les connexions jdbc.

Répondre

5

Définir le format de date nls dans un après déclenchement d'ouverture de session

5

Merci à tous, qui a travaillé pour moi. Le déclencheur que j'inséré est la suivante:

CREATE OR REPLACE TRIGGER LOGINTRG 
AFTER LOGON ON DATABASE 
BEGIN 
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS'''; 
END LOGINTRG; 
+0

Voir http://stackoverflow.com/questions/283589/oracle-setting-per-user-default-scheme-not-altering-a-session sur la création de déclenchement pour un schéma spécifique. – Vadzim

+0

J'ai essayé ça, ça a fonctionné, mais ça a tout ralenti jusqu'au point où il était insupportable (sélectionnez count (*) sur une table vide en quelques secondes !!!) – laurent

+0

@laurent me semble comme si votre problème se cachait ailleurs. Nous utilisons ce déclencheur de connexion en production avec de nombreux clients depuis plusieurs années et il n'y a pas de problème. – Yoni

Questions connexes