在Oracle Reports中设置基于NLS_NUMERIC_CHARACTERS的会话

时间:2014-03-21 13:32:16

标签: oracle oraclereports reportserver

我试图创建一个可以在英语和(加拿大)法语数字格式之间切换的报告(1,234.56 vs 1 234,56)但是我遇到了一些麻烦。

在我开始尝试之前,我想说过去我们总是将法语号码转换成一个字符,而不是在那里进行适当的字符串修改,但这显然不是“#”。最好的解决方案,我试图找到更好的东西。

我尝试做的第一件事是将以下行添加到Oracle报告本身的BEFORE REPORT触发器中:

srw.do_sql ('alter session set nls_numeric_characters = '', '''); 

我的号码字段设置为掩码"(NNNGNNNGNN0D00)"所以我认为G&D和D会使用会话的NLS_NUMERIC_CHARACTERS设置,但他们似乎不会。

要查看设置是否实际更改,我在报告中创建了以下查询并显示了它的输出:

select value from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS';

输出确实从'。,'到','使用我的alter session命令。

在进行了一些在线研究之后,我读到了根据本文档确实需要在Oracle Report Server配置中进行更改 - 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参数,但仍然没有运气。该报告已运行,但数字格式仍然使用“&”和“。”进行分组和小数分隔。

有谁知道我们遗失了什么或者我们还能尝试什么?

1 个答案:

答案 0 :(得分:-1)

我遇到了同样的问题,在需要应用 NLS 格式的地方做了 to_char()。

相关问题