Io so come il set di caratteri del database ( NLS_CHARACTERSET
in select * from v$nls_parameters;
) e il set di caratteri client (l'ambiente client impostazione NLS_LANG
) interagiscono.
Ciò che non riesco a scoprire, tuttavia, è come o se posso determinare, per una sessione stabilita , quale sia il pensiero del set di caratteri del client corrente.
Ciò è effettivamente possibile?
Nota: SELECT * FROM NLS_SESSION_PARAMETERS;
non non includere il set di caratteri (su 10G2).
Per chiarire assolutamente cosa mi piacerebbe realizzare:
- NLS_LANG è impostato nell'ambiente client su un valore arbitrario (ad esempio
GERMAN_GERMANY.WE8MSWIN1252
) - L'applicazione di database [*] si avvia e stabilisce una connessione / sessione al database Oracle.
- L'applicazione di database [*] vuole "chiedere" a Oracle (non al suo ambiente di sistema operativo) quale sarà il set di caratteri client che Oracle assumerà.
[*]: Se l'applicazione db è sqlplus, l'esempio sarebbe simile al seguente:
...
sqlplus /nolog
connect user/pass@example
*magic command*;
CLIENT CHARACTERSET = ...
La nota di Jack nella sua risposta solleva due punti importanti:
- Con Oracle, che esegue la traduzione del set di caratteri. È il codice della libreria client o viene eseguito sul lato server?
- A quanto pare è il client, il client dovrebbe esporre questa impostazione - ciò che il lib / strumento client presume sia questa impostazione. C'è qualcuno dei lib / strumenti client Oracle (sqlplus, OCI / OCCI, Pro * C, ...) che possono essere interrogati per quello che pensa questa impostazione?