Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में अपने सत्र का मुद्रा प्रतीक कैसे बदलें

Oracle डेटाबेस में, कुछ भिन्न NLS पैरामीटर हैं जो यह निर्धारित करते हैं कि TO_CHAR() जैसे कार्यों का उपयोग करते समय मुद्रा कैसे प्रदर्शित होती है किसी संख्या को मुद्रा के रूप में प्रारूपित करने के लिए।

  • NLS_CURRENCY L . के लिए स्थानीय मुद्रा प्रतीक के रूप में उपयोग करने के लिए स्ट्रिंग निर्दिष्ट करता है संख्या प्रारूप तत्व।
  • NLS_ISO_CURRENCY निर्धारित करता है कि C . के लिए क्या उपयोग करना है प्रारूप तत्व।
  • NLS_DUAL_CURRENCY निर्दिष्ट करता है कि U . के लिए क्या उपयोग करना है प्रारूप तत्व।

इनके लिए डिफ़ॉल्ट मान NLS_TERRITORY . द्वारा निर्धारित किया जाता है पैरामीटर।

आप चाहें तो इनमें से प्रत्येक पैरामीटर को अलग-अलग बदल सकते हैं, लेकिन ज्यादातर मामलों में, बेहतर होगा कि आप NLS_TERRITORY को बदल दें। पैरामीटर। ऐसा इसलिए है, क्योंकि ऐसा करने से उस क्षेत्र के लिए अन्य सभी मुद्रा मापदंडों को उनके डिफ़ॉल्ट मानों में बदल दिया जाता है।

वर्तमान मान लौटाएं

सबसे पहले, आइए 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        AUSTRALIA    
NLS_CURRENCY         $            
NLS_ISO_CURRENCY     AUSTRALIA    
NLS_DUAL_CURRENCY    $           

क्षेत्र ऑस्ट्रेलिया है, और सभी मुद्रा पैरामीटर इस क्षेत्र के लिए डिफ़ॉल्ट मानों का उपयोग करते हैं।

सभी मुद्रा चिह्न बदलें

आइए NLS_TERRITORY बदलें नए मान के लिए पैरामीटर:

ALTER SESSION SET NLS_TERRITORY = 'Denmark';

परिणाम:

Session altered.

आइए अब हमारे मुद्रा एनएलएस मापदंडों की फिर से जांच करें:

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

परिणाम:

           PARAMETER      VALUE 
____________________ __________ 
NLS_TERRITORY        DENMARK    
NLS_CURRENCY         kr         
NLS_ISO_CURRENCY     DENMARK    
NLS_DUAL_CURRENCY    €          

NLS_ISO_CURRENCY के संबंध में पैरामीटर, हालांकि यह निर्धारित करता है कि किस आईएसओ मुद्रा प्रतीक का उपयोग करना है, वास्तविक मुद्रा प्रतीक यहां वापस नहीं किया गया है।

निम्न उदाहरण दिखाता है कि मेरा क्या मतलब है:

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   

इसलिए, भले ही NLS_ISO_CURRENCY पैरामीटर का मान DENMARK . है , C स्वरूप तत्व लौटा DKK , जो डेनमार्क के लिए वास्तविक आईएसओ मुद्रा प्रतीक है।

मुद्रा प्रतीकों को अलग-अलग बदलें

जैसा कि उल्लेख किया गया है, आप प्रत्येक एनएलएस पैरामीटर को अलग-अलग स्पष्ट रूप से सेट कर सकते हैं।

उदाहरण के लिए, पिछले उदाहरण में क्षेत्र को डेनमार्क में सेट करने के बाद, अब हम किसी भी (या सभी) मुद्रा प्रतीकों को स्पष्ट रूप से सेट करके ओवरराइड कर सकते हैं:

ALTER SESSION SET NLS_CURRENCY = '$';
ALTER SESSION SET NLS_ISO_CURRENCY = 'AUSTRALIA';
ALTER SESSION SET NLS_DUAL_CURRENCY = '$';

परिणाम:

Session altered.


Session altered.


Session altered.

अब पिछले SELECT running को चलाने पर हमें यही मिलता है कथन:

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

परिणाम:

               L             C                U 
________________ _____________ ________________ 
          $45         AUD45              $45   

इसलिए, भले ही हमारा क्षेत्र डेनमार्क में बना हुआ है, हमारे मुद्रा प्रतीक एक अलग क्षेत्र (इस मामले में, ऑस्ट्रेलिया) को दर्शाते हैं।

ऐसा करते समय ध्यान रखने वाली एक बात यह है कि, आप ऐसी स्थिति में पहुंच सकते हैं जहां आपके मुद्रा पैरामीटर अन्य पैरामीटर, जैसे NLS_NUMERIC_CHARACTERS को प्रतिबिंबित नहीं करते हैं। (जो निर्धारित करता है कि समूह विभाजक और दशमलव वर्ण के लिए कौन से वर्णों का उपयोग करना है)।

उदाहरण के लिए:

SELECT 
    TO_CHAR(4599.60, 'L99G999D99') AS "L",
    TO_CHAR(4599.60, 'C99G999D99') AS "C",
    TO_CHAR(4599.60, 'U99G999D99') AS "U"
FROM DUAL;

परिणाम:

                      L                    C                       U 
_______________________ ____________________ _______________________ 
           $4.599,60          AUD4.599,60               $4.599,60   

इस मामले में, हमारे पास ऑस्ट्रेलियाई मुद्रा प्रतीक हैं, लेकिन समूह विभाजक एक अवधि है (. ) और दशमलव वर्ण एक अल्पविराम है (, ), जो ऑस्ट्रेलियाई सम्मेलनों को नहीं दर्शाता है (यह डेनमार्क द्वारा इस्तेमाल किए गए सम्मेलन को दर्शाता है)। ऑस्ट्रेलियाई सम्मेलन दूसरा तरीका है - समूह विभाजक एक अल्पविराम है (, ) और दशमलव वर्ण एक अवधि है (. )।

इसे स्पष्ट करने के लिए, यदि हम केवल ऑस्ट्रेलिया के क्षेत्र को रीसेट करते हैं, तो फिर से स्टेटमेंट चलाएँ:

ALTER SESSION SET NLS_TERRITORY = 'Australia';

SELECT 
    TO_CHAR(4599.60, 'L99G999D99') AS "L",
    TO_CHAR(4599.60, 'C99G999D99') AS "C",
    TO_CHAR(4599.60, 'U99G999D99') AS "U"
FROM DUAL;

परिणाम:

                      L                    C                       U 
_______________________ ____________________ _______________________ 
           $4,599.60          AUD4,599.60               $4,599.60    

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. गोद लेने के चरण में क्या होता है तैयारी

  2. मैं ORA-00911:अमान्य वर्ण त्रुटि को कैसे हल कर सकता हूं?

  3. अंतराल को मिनटों में बदलें

  4. क्या CASE स्टेटमेंट और DECODE समकक्ष हैं?

  5. जेएसएफ + ईजेबी आवेदन में डीबी अपवाद पकड़ो