我试图创建一个可以在英语和(加拿大)法语数字格式之间切换的报告(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参数,但仍然没有运气。该报告已运行,但数字格式仍然使用“&”和“。”进行分组和小数分隔。
有谁知道我们遗失了什么或者我们还能尝试什么?
答案 0 :(得分:-1)
我遇到了同样的问题,在需要应用 NLS 格式的地方做了 to_char()。