0
votes

We create reports using APEX and need to present numbers formated with "," as decimal separator and " " as thousand separator. For example: 1000000.001 becomes 1 000 000,001

The solution we currently use is to format every column of our reports from within the query:

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

This works, but is not neat as it can't be changed easily all at once, it requires us to do this for every single column we need to format.

We would like to set a different the nls_numeric_characters at the session level, if possible, and override the default NLS configuration, which seems to be drawn from the browser settings as activating debug shows me:

Language derived from: FLOW_PRIMARY_LANGUAGE, current browser language: en

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

Would anyone know of a neat solution to force the 'nls_numeric_characters' accross the session (set "on page load" or something) or even across the whole application (set once for all for all pages / sessions)?

1

1 Answers

0
votes

Here's one option:

  • navigate to application's "Shared components"
  • go to "Security attributes"
  • go to "Database session" group of properties
  • put the following code into "Initialization PL/SQL Code":

    begin
      execute immediate q'[alter session set nls_numeric_characters = ', ']';
    end;
    
  • run the page