Настройка 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#i1013352

Я связался с командой, ответственной за наш сервер приложений 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, но все равно не повезло. Отчет выполняется, но форматирование чисел по-прежнему использует , и . для группировки и десятичного разделения.

Кто-нибудь знает, что нам не хватает или что еще мы могли бы попробовать?


person Sputnik    schedule 21.03.2014    source источник


Ответы (1)


У меня была та же проблема, и я сделал to_char() там, где должен применяться этот формат NLS.

person Anonymous    schedule 21.01.2021