Oracle APEX-在应用程序或会话级别强制会话nls_数字_字符
我们使用APEX创建报告,并且需要将格式为“,”的数字表示为十进制分隔符,将“,”表示为千位分隔符。例如:Oracle APEX-在应用程序或会话级别强制会话nls_数字_字符,oracle,oracle-apex,nls,Oracle,Oracle Apex,Nls,我们使用APEX创建报告,并且需要将格式为“,”的数字表示为十进制分隔符,将“,”表示为千位分隔符。例如:1000000.001变为100000000001 我们目前使用的解决方案是格式化查询中报告的每一列: select to_char(value_to_display,'999G999G999G999D9999999','nls_numeric_characters='', ''') value_to_display, ... from ... ; 这是可行的,但并不整洁
1000000.001
变为100000000001
我们目前使用的解决方案是格式化查询中报告的每一列:
select to_char(value_to_display,'999G999G999G999D9999999','nls_numeric_characters='', ''') value_to_display,
...
from ...
;
这是可行的,但并不整洁,因为它不容易一下子改变,它要求我们对需要格式化的每一列都这样做
如果可能,我们希望在会话级别设置不同的nls_数字_字符,并覆盖默认nls配置,该配置似乎是从浏览器设置中提取的,因为激活调试显示:
Language derived from: FLOW_PRIMARY_LANGUAGE, current browser language: en
alter session set nls_language='AMERICAN' nls_territory='AMERICA'
有没有人知道一个简洁的解决方案,可以强制在整个会话(设置为“页面加载”或其他)甚至整个应用程序(为所有页面/会话设置一次)中使用“nls”数字字符?这里有一个选项:
- 导航到应用程序的“共享组件”
- 转到“安全属性”
- 转到“数据库会话”属性组
- 将以下代码放入“初始化PL/SQL代码”:
- 运行页面
begin
execute immediate q'[alter session set nls_numeric_characters = ', ']';
end;