Newsgroup: it.comp.java
Titolo: Settaggio NLS_LANG di Oracle

Salve,
sviluppando in locale, mi trovo con un'eccezione INVALID NUMBER di
Oracle, cosa che sui server di sviluppo non avviene, per via del
formato dei numeri usati nelle INSERT.
Stesso problema mi capitava con il client TOAD, testando l'ambiente
con la:
SELECT TO_NUMBER('2.33') FROM DUAL
Avendo capito che il problema è sul client, dopo aver raccolto un po'
di informazioni, ho impostato la variabile d'ambiente in windows
NLS_LANG al valore seguente:
AMERICAN_AMERICA.WE8MSWIN1252
In tal modo, su TOAD non ho più l'errore INVALID NUMBER con i numeri
decimali con il punto come separatore. Ma lanciando l'applicazione web
da Eclipse (uso Tomcat), il driver JDBC utilizzato non legge la
variabile d'ambiente e quindi imposta qualche valore di default nelle
variabili di sessione (sessione oracle) che pretende la virgola come
separatore decimale.
Qualcuno sa come risolvere questo problemino?!?!?

 Qualcuno sa come risolvere questo problemino?!?!?
Tempo fa ho avuto lo stesso problema, devi passare, vado un po a memoria, le
proprieta' di connessione nella getConnection
Properties p = Properties();
p.put("NLS_LANG",".....");
p.put("charSet", "....");
p.put("user", "user");
p.put("password", "pass");
con = DriverManager.getConnection(url, prop); 
Dovrei ritrovare l'applicazione che avevo fatto per essere piu' preciso, ma
il senso e' questo, fai qualche ricerca sul sito oracle, li troverai la
soluzione esatta sicuramente
Fammi sapere
ciao,crx
-- 
crx
http://www.crx.it


Ciao crx,
grazie mille per la risposta.
Ho (FINALMENTE!) risolto diversamente...avrei dovuto toccare la parte
relativa alla creazione della connessione etc.
In realtà, ho scovato che, se il driver JDBC che si utilizza è il thin
driver, i settaggi NLS_LANG etc. vengono generati a partire dalle
proprietà user.language e user.country della JVM.
Ho quindi settato tali parametri nello script di lancio di tomcat e
adesso funge...
In Eclipse, si possono settare i parametri VM all'interno della
finestrella dei parametri di configurazione Run. Ho aggiunto la
seguente riga:
-Duser.language=en -Duser.country=US
Ciao e grazie ancora!
--
H0le

 SELECT TO_NUMBER('2.33') FROM DUAL
Questa la risolverei passando il format mask a TO_NUMBER (999d99 se non
ricordo male)
Enrico


wrote:

Il fatto è che soltanto testando l'applicazione sul proprio server
locale si presenta questo problema. Quindi non è consigliabile
cambiare il codice:)
La query di sopra è di testing per l'ambiente. Il codice, in realtà,
presenta delle query di INSERT con dei valori numerici provenienti da
form html che hanno la virgola come separatore decimale. Tramite un
replace() su queste stringhe si sostituisce la virgola col punto per
farlo funzionare nell'ambiente di esercizio...solo che in locale si ha
una diversa configurazione (vedi sopra quanto scritto riguardo al
driver jdbc thin di oracle) e quindi tali inserimenti non funzionano.
Il problema era lato client jdbc e quindi non aveva senso intervenire
a livello di codice java o sql.
Alla fine la soluzione era semplice...ma vallo a scoprire che i
settaggi NLS di oracle, quando utilizzi driver thin, si basano sui
parametri della JVM!!!
--
-h