我正在尝试创建一个可以在英语和(加拿大)法语数字格式(1,234.56 与 1 234,56)之间切换的报告,但遇到了一些麻烦。
在我开始尝试之前,我想说的是,过去我们总是将法语数字转换为字符,然后在那里进行适当的字符串修改,但这显然不是最好的解决方案,我我试图找到更好的东西。
我尝试做的第一件事是将以下行添加到 Oracle 报告本身的 BEFORE REPORT 触发器中:
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 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 参数,但仍然没有运气。报告运行,但数字格式仍使用 , 和 . 进行分组和小数分隔。
有谁知道我们缺少什么或我们可以尝试什么?