读取当前的NLS_NUMERIC_CHARACTERS会话设置

oli*_*ner 0 sql oracle sessioncontext

我必须使用不同的NLS_NUMERIC_CHARACTERSaka逗号分隔符在不同地区运行以数字小数作为参数的报告。

NLS_NUMERIC_CHARACTERS在会话级别设置,例如 与

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
Run Code Online (Sandbox Code Playgroud)

表达式NLS_NUMERIC_CHARACTERS = ',.' 表示小数点标记是逗号,千位标记是点。

为了使用户在所有不同区域中都能正确输入内容,我假设NLS_NUMERIC_CHARACTERS正确设置了会话的设置。我想将该会话状态评估为一个字段值,s_nlsparam并使用它正确地将报告参数转换为

.. to_number(expr,format, v_nlsparam) ...
Run Code Online (Sandbox Code Playgroud)

到目前为止的计划。这将ORA-01722: invalid number在多国环境中遏制任何潜力。

现在,我找不到一种方法来读取设置的当前会话状态NLS_NUMERIC_CHARACTERS。我检查了该视图v$session,但没有提供任何此类字段。我都没有使用以下方法找到这样的参数:

select sys_context('USERENV', .... ) from dual
Run Code Online (Sandbox Code Playgroud)

有办法吗?

Gor*_*aca 5

您可以使用以下选择查看该信息:

select value 
  from nls_session_parameters
 where parameter = 'NLS_NUMERIC_CHARACTERS';
Run Code Online (Sandbox Code Playgroud)