Localizzazione con Oracle?

venerdì 03 dicembre 2010 - 17.30
Tag Elenco Tags  Oracle 10g

volperubbia Profilo | Senior Member

Ciao a tutti,
vorrei localizzare delle date o dei numeri e convertili in stringa,
ad esempio:

SELECT
TO_CHAR(SYSDATE, 'Day', 'NLS_DATE_LANGUAGE=ITALIAN'),
TO_CHAR(SYSDATE, 'Day', 'NLS_DATE_LANGUAGE=ENGLISH'),
TO_CHAR(SYSDATE, 'Day', 'NLS_DATE_LANGUAGE=FRENCH')
FROM DUAL;

Per le data funziona, per i numeri esiste qualcosa di analogo?

SELECT
to_char(444945.2463, '99999999d00', 'nls_numeric_characters='', ''')
FROM DUAL;

Con questo ottengo quello che voglio, ma vorrei evitare di passare
da nls_numeric_characters.
Data una lingua è posibile recuperare il valore del corrispondente
nls_numeric_characters con qualche funzione Oracle?

Nel caso del primo esempio con le date, se sono all'interno di una
stored procedure devo passare il parametro lingua o esiste una qualche
funzione Oracle che mi torna quella del thread corrente?

Grazie per l'attenzione,
Davide

micto27 Profilo | Senior Member

Ciao,

prova a dare un'occhiata a questo link

http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch3globenv.htm#NLSPG003

in base a questo potresti attivare le impostazione desiderate all'attivazione della sessione
mediante l'esecuzione di un

ALTER SESSION SET NLS_TERRITORY = Italy;
piuttosto che
ALTER SESSION SET NLS_TERRITORY = France;
o
ALTER SESSION SET NLS_TERRITORY = America;

da tale impostazione vengono derivati i default di alcune caratterizzazioni,
e fra queste anche il separatore decimale.

Michele

volperubbia Profilo | Senior Member

Ciao Michele, grazie.
Ma usando questo ALTER SESSION, ad esempio dentro una
stored procedure ...

CREATE OR REPLACE PROCEDURE sp_Prova()
IS
BEGIN
ALTER SESSION SET NLS_TERRITORY = Italy;
...
END;
/

la modifica influisce solo al suo interno o influisce anche sulle altre
sessioni utente?
Esempio: aggiungo un parametro p_Language alla sp e poi la chiamo
da codice vb (applicazione web), passandogli la lingua del thread corrente ...

Davide

micto27 Profilo | Senior Member

>Ciao Michele, grazie.
>Ma usando questo ALTER SESSION, ad esempio dentro una
>stored procedure ...
l'ALTER SESSION puoi eseguirlo a monte, in un comando separato, all'attivazione della connessione.
L'effetto durerà per tutta la durata della sessione o fino ad un successivo ALTER SESSION e non indicerà sulle altre sessioni.

La procedure che eseguirai utilizzerà quindi le impostazioni della sessione nell'ambito della quale viene
eseguita.

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5