0

我正在尝试创建一个可以在英语和(加拿大)法语数字格式(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 参数,但仍然没有运气。报告运行,但数字格式仍使用 , 和 . 进行分组和小数分隔。

有谁知道我们缺少什么或我们可以尝试什么?

4

1 回答 1

-1

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

于 2021-01-21T15:09:53.680 回答