Ich weiß, wie der Datenbankzeichensatz ( NLS_CHARACTERSET
in select * from v$nls_parameters;
) und der Clientzeichensatz (die Clientumgebungseinstellung NLS_LANG
) interagieren.
Was ich jedoch nicht herausfinden kann, ist, wie oder ob ich für eine etablierte Sitzung bestimmen kann , was Oracle für den aktuellen Client-Zeichensatz hält.
Ist das überhaupt möglich?
Hinweis: SELECT * FROM NLS_SESSION_PARAMETERS;
nicht nicht den Zeichensatz enthält (auf 10g2).
Um absolut klar zu machen, was ich erreichen möchte:
- NLS_LANG wird in der Clientumgebung auf einen beliebigen Wert gesetzt (zum Beispiel
GERMAN_GERMANY.WE8MSWIN1252
). - Die Datenbankanwendung [*] startet und stellt eine Verbindung / Sitzung zur Oracle-Datenbank her.
- Die Datenbankanwendung [*] möchte Oracle (nicht seine Betriebssystemumgebung) "fragen", welchen Oracle-Zeichensatz Oracle annehmen wird.
[*]: Wenn die Datenbankanwendung sqlplus ist, sieht das Beispiel wie folgt aus:
...
sqlplus /nolog
connect user/pass@example
*magic command*;
CLIENT CHARACTERSET = ...
Jacks Notiz in seiner Antwort wirft zwei wichtige Punkte auf:
- Mit Oracle, der die Zeichensatzübersetzung durchführt. Ist es der Client-Bibliothekscode oder wird er auf der Serverseite ausgeführt?
- Wie es scheint, ist es der Client, der Client müsste diese Einstellung verfügbar machen - was die Client-Bibliothek / das Client-Tool unter dieser Einstellung annimmt. Gibt es eine der Oracle-Client-Bibliotheken / -Tools (sqlplus, OCI / OCCI, Pro * C, ...), die nach ihrer Meinung nach abgefragt werden können?