Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle APEX-在应用程序或会话级别强制会话nls_数字_字符_Oracle_Oracle Apex_Nls - Fatal编程技术网

Oracle APEX-在应用程序或会话级别强制会话nls_数字_字符

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 ... ; 这是可行的,但并不整洁

我们使用APEX创建报告,并且需要将格式为“,”的数字表示为十进制分隔符,将“,”表示为千位分隔符。例如:
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;