В Oracle Database следните NLS параметри могат да се използват, за да се определи как се показват валутите за текущата сесия:
NLS_CURRENCY
определя низа, който да се използва като символ на местна валута заL
елемент с числов формат.NLS_ISO_CURRENCY
определя какво да се използва заC
форматен елемент.NLS_DUAL_CURRENCY
указва какво да се използва заU
форматен елемент.
Стойността по подразбиране за тях се определя от NLS_TERRITORY
параметър.
L
, C
и U
Елементите на числовия формат могат да се използват във функции като TO_CHAR()
за да форматирате число като валута.
Как да върна символа за валута
Можете да разберете коя валута използва текущата ви сесия, като направите заявка за V$NLS_PARAMETERS
преглед.
Пример:
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_CURRENCY',
'NLS_ISO_CURRENCY',
'NLS_DUAL_CURRENCY'
);
Резултат:
PARAMETER VALUE ____________________ __________ NLS_TERRITORY GERMANY NLS_CURRENCY € NLS_ISO_CURRENCY GERMANY NLS_DUAL_CURRENCY €
Стойността по подразбиране на тези параметри се извлича от NLS_TERRITORY
параметър. Ето моята текуща настройка за този параметър:
SELECT VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER = 'NLS_TERRITORY';
Резултат:
GERMANY
Чрез промяна на този параметър стойността на другите параметри ще бъде актуализирана до стойностите по подразбиране за тази територия (освен ако новата територия не използва същата стойност като старата територия за даден параметър).
Можете обаче да промените всеки параметър директно, което ви позволява да имате различен символ за валута от този по подразбиране за тази територия.
Форматните елементи в действие
Ето пример за това къде могат да се използват горните NLS параметри:
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;
Резултат:
L C U ________________ _____________ ______________ kr45 DKK45 €45