Oracle APEX-在应用程序或会话级别强制会话nls_numeric_characters

时间:2018-06-27 15:03:10

标签: oracle oracle-apex nls

我们使用APEX创建报告,并且需要显示数字格式为“,”作为小数点分隔符,“”作为千位分隔符。例如:1000000.001变成1 000 000,001

我们当前使用的解决方案是在查询中格式化报告的每一列:

select to_char(value_to_display,'999G999G999G999D9999999','nls_numeric_characters='', ''') value_to_display,
       ...
from   ...
;

这行得通,但并非整洁,因为它不能一次轻松地全部更改,它要求我们为需要格式化的每一列执行此操作。

如果可能的话,我们想在会话级别上设置一个不同的nls_numeric_characters,并覆盖默认的NLS配置,该配置似乎是从浏览器设置中提取出来的,因为激活调试显示了我的心态:

Language derived from: FLOW_PRIMARY_LANGUAGE, current browser language: en

alter session set nls_language='AMERICAN' nls_territory='AMERICA'

有人会知道一种巧妙的解决方案来强制'nls_numeric_characters'在整个会话中(设置为“页面加载时”或其他方式)或者甚至在整个应用程序中(为所有页面/会话设置一次)吗?

1 个答案:

答案 0 :(得分:0)

这里是一个选择:

  • 导航到应用程序的“共享组件”
  • 转到“安全属性”
  • 转到“数据库会话”属性组
  • 将以下代码放入“初始化PL / SQL代码”中:

    begin
      execute immediate q'[alter session set nls_numeric_characters = ', ']';
    end;
    
  • 运行页面