Oracle
 sql >> Database >  >> RDS >> Oracle

Scopri quale simbolo di valuta utilizza la tua sessione in Oracle

In Oracle Database, è possibile utilizzare i seguenti parametri NLS per determinare come visualizzare le valute per la sessione corrente:

  • NLS_CURRENCY specifica la stringa da utilizzare come simbolo di valuta locale per la L elemento formato numero.
  • NLS_ISO_CURRENCY determina cosa usare per la C elemento di formato.
  • NLS_DUAL_CURRENCY specifica cosa usare per la U elemento di formato.

Il valore predefinito per questi è determinato da NLS_TERRITORY parametro.

La L , C e U gli elementi di formato numerico possono essere utilizzati in funzioni come TO_CHAR() per formattare un numero come valuta.

Come restituire il simbolo della valuta

Puoi scoprire quale simbolo di valuta utilizza la tua sessione corrente interrogando il V$NLS_PARAMETERS visualizza.

Esempio:

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

Risultato:

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

Il valore predefinito di questi parametri è derivato da NLS_TERRITORY parametro. Ecco la mia impostazione attuale per quel parametro:

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

Risultato:

GERMANY

Modificando quel parametro, il valore degli altri parametri verrà aggiornato ai valori predefiniti per quel territorio (a meno che il nuovo territorio utilizzi lo stesso valore del vecchio territorio per un dato parametro).

Tuttavia, puoi anche modificare direttamente ciascun parametro, il che ti consente di avere un simbolo di valuta diverso da quello predefinito per quel territorio.

Formatta elementi in azione

Ecco un esempio di dove possono essere utilizzati i parametri NLS di cui sopra:

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;

Risultato:

               L             C              U 
________________ _____________ ______________ 
         kr45         DKK45            €45