Настройка сеансов на основе NLS_NUMERIC_CHARACTERS в отчетах Oracle
Я пытаюсь создать отчет, который может переключаться между английским и (канадским) французским форматированием чисел (1 234,56 против 1 234,56), но у меня возникли некоторые проблемы.
Прежде чем перейти к тому, что я попробовал, я хотел бы сказать, что в прошлом мы всегда преобразовывали французское число в символ, а затем вносили соответствующие изменения в строку, но это, очевидно, не лучшее решение, и я ' Я пытаюсь найти что-то лучшее в будущем.
Первым делом я попытался добавить следующую строку в триггер BEFORE REPORT в самом отчете Oracle:
srw.do_sql ('alter session set nls_numeric_characters = '', ''');
У меня есть мои числовые поля, настроенные с маской формата "(NNNGNNNGNN0D00)", поэтому я предположил бы, что G и D будут использовать настройку NLS_NUMERIC_CHARACTERS сеанса, но, похоже, они этого не делают.
Чтобы увидеть, действительно ли изменяется параметр, я создал следующий запрос в отчете и показал его вывод:
select value from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS';
Конечно же, вывод изменился с '.,' На ', ' с помощью моей команды alter session.
Проведя дополнительные исследования в Интернете, я прочитал, что изменение действительно необходимо внести в конфигурацию сервера отчетов Oracle в соответствии с этой документацией - http://docs.oracle.com/cd/B14099_19/bi.1012/b14048/pbr_conf.htm
Я связался с командой, ответственной за наш сервер приложений Oracle, и попросил их вставить конфигурации, необходимые для настройки форматирования чисел на английском и французском языках, и они добавили следующее:
<environment id="EN">
<envVariable name="NLS_LANG" value="AMERICAN_AMERICA.WE8ISO8859P1"/>
</environment>
<environment id="FR">
<envVariable name="NLS_LANG" value="FRENCH_CANADA.WE8ISO8859P1"/>
<envVabiable name="NLS_NUMERIC_CHARACTERS" value="', '"/>
</environment>
Сервер отчетов был перезапущен, и я ввел URL-адрес для запроса отчета вместе с параметром ENVID=FR, но все равно не повезло. Отчет запускается, но для форматирования чисел по-прежнему используются "," и "." Для группировки и десятичного разделения.
Кто-нибудь знает, чего нам не хватает или что еще можно попробовать?
1 ответ
У меня была та же проблема, и я сделал to_char() там, где должен применяться этот формат NLS.