Я знаю, как взаимодействуют набор символов базы данных ( NLS_CHARACTERSET
in select * from v$nls_parameters;
) и набор символов клиента (параметр среды клиента NLS_LANG
).
Однако я не могу выяснить, как или если я могу определить для установленного сеанса , что Oracle считает текущим клиентским набором символов.
Это вообще возможно?
Примечание: SELECT * FROM NLS_SESSION_PARAMETERS;
это не включает набор символов (на 10Г2).
Чтобы было абсолютно ясно, чего я хотел бы достичь:
- NLS_LANG устанавливается в клиентской среде на произвольное значение (например
GERMAN_GERMANY.WE8MSWIN1252
) - Приложение базы данных [*] запускается и устанавливает соединение / сеанс с базой данных Oracle.
- Приложение базы данных [*] хочет «спросить» у Oracle (а не в своей среде ОС), какой клиентский набор символов будет принимать Oracle.
[*]: Если приложение db - sqlplus, пример будет выглядеть следующим образом:
...
sqlplus /nolog
connect user/pass@example
*magic command*;
CLIENT CHARACTERSET = ...
Записка Джека в его ответе поднимает два важных момента:
- С Oracle, который делает перевод набора символов. Это код клиентской библиотеки или это делается на стороне сервера?
- Поскольку это, кажется, клиент, клиент должен был бы выставить этот параметр - то, что клиентский lib / tool предполагает, что этот параметр является. Есть ли какие-либо из клиентских библиотек / инструментов Oracle (sqlplus, OCI / OCCI, Pro * C, ...), к которым можно обратиться с запросом о том, что это за параметр?