sql >> Base de Datos >  >> RDS >> Oracle

Averigüe qué símbolo de moneda utiliza su sesión en Oracle

En Oracle Database, se pueden usar los siguientes parámetros NLS para determinar cómo se muestran las monedas para la sesión actual:

  • NLS_CURRENCY especifica la cadena que se utilizará como símbolo de moneda local para L elemento de formato de número.
  • NLS_ISO_CURRENCY determina qué usar para el C elemento de formato.
  • NLS_DUAL_CURRENCY especifica qué usar para la U elemento de formato.

El valor predeterminado para estos está determinado por el NLS_TERRITORY parámetro.

El L , C y U los elementos de formato numérico se pueden usar en funciones como TO_CHAR() para dar formato a un número como moneda.

Cómo devolver el símbolo de moneda

Puede averiguar qué símbolo de moneda usa su sesión actual consultando V$NLS_PARAMETERS ver.

Ejemplo:

SELECT 
    PARAMETER,
    VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
    'NLS_TERRITORY',
    'NLS_CURRENCY',
    'NLS_ISO_CURRENCY',
    'NLS_DUAL_CURRENCY'    
    );

Resultado:

           PARAMETER      VALUE 
____________________ __________ 
NLS_TERRITORY        GERMANY    
NLS_CURRENCY         €          
NLS_ISO_CURRENCY     GERMANY    
NLS_DUAL_CURRENCY    €         

El valor predeterminado de estos parámetros se deriva del NLS_TERRITORY parámetro. Esta es mi configuración actual para ese parámetro:

SELECT VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER = 'NLS_TERRITORY';

Resultado:

GERMANY

Al cambiar ese parámetro, el valor de los otros parámetros se actualizará a los valores predeterminados para ese territorio (a menos que el nuevo territorio use el mismo valor que el antiguo territorio para un parámetro determinado).

Sin embargo, también puede cambiar cada parámetro directamente, lo que le permite tener un símbolo de moneda diferente al predeterminado para ese territorio.

Elementos de formato en acción

Aquí hay un ejemplo de dónde se pueden usar los parámetros NLS anteriores:

ALTER SESSION SET NLS_TERRITORY = 'DENMARK';

SELECT 
    TO_CHAR(45, 'L99') AS "L",
    TO_CHAR(45, 'C99') AS "C",
    TO_CHAR(45, 'U99') AS "U"
FROM DUAL;

Resultado:

               L             C              U 
________________ _____________ ______________ 
         kr45         DKK45            €45