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

TO_CHAR . का उपयोग करके Oracle में संख्या स्वरूपण

सुनिश्चित करें कि आप NUMBER का उपयोग करने के बजाय संख्या डेटा-प्रकार का उपयोग डेटा के लिए उपयुक्त पैमाने और सटीकता के साथ करते हैं बिना पैमाने और सटीकता के। यदि आप डॉलर/यूरो/पाउंड/आदि का भंडारण करने जा रहे हैं। फिर सकल विश्व उत्पाद 2014 में $100,000,000,000,000 के क्रम में था। मान लें कि आप इससे अधिक का सौदा नहीं करने जा रहे हैं तो आपका मुद्रा कॉलम हो सकता है:

NUMBER(17,2)

यदि आपको कोई ऐसा मूल्य मिलता है जो उससे बड़ा है तो आपको अपने डेटा पर एक विवेक जांच करने की आवश्यकता है और सोचें कि क्या दुनिया के सकल उत्पाद से बड़ी राशि समझ में आती है। यदि आप मूल्यों को स्टोर करने जा रहे हैं, उदाहरण के लिए, येन या जिम्बाब्वे डॉलर तो पैमाने को उचित रूप से समायोजित करें।

आप पैकेज में उप-प्रकार को इस प्रकार भी परिभाषित कर सकते हैं:

CREATE PACKAGE currencies_pkg IS
  SUBTYPE currency_type IS NUMBER(17,2);

  FUNCTION formatCurrency(
    amount IN CURRENCY_TYPE
  ) RETURN VARCHAR2;
END;
/

और इसे प्रारूपित करने के लिए आपका कोड हो सकता है:

CREATE PACKAGE BODY currencies_pkg IS
  FUNCTION formatCurrency(
    amount IN CURRENCY_TYPE
  ) RETURN VARCHAR2
  IS
  BEGIN
    RETURN TO_CHAR( currency_value, 'FM999999999999990D00' );
  END;
END;
/

फिर यदि आप अपनी संग्रहीत कार्यविधियों/पैकेजों में उस उप-प्रकार का संदर्भ देते हैं, तो आप बिना किसी अपवाद के मुद्रा डेटा प्रकार के अधिकतम आकार को पार करने में सक्षम नहीं होंगे। मान प्रदर्शित करने के लिए प्रारूप मॉडल को केवल एक ही स्थान पर परिभाषित करने की आवश्यकता है और चूंकि इनपुट मुद्रा उप-प्रकार तक सीमित है, तो स्वरूपण फ़ंक्शन कभी भी लगाए गए पैमाने/परिशुद्धता से अधिक नहीं होगा और # आउटपुट नहीं कर सकता है। कोड> एस.

CREATE PROCEDURE your_procedure(
  in_value1 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE,
  in_value2 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE
)
IS
  v_value CURRENCIES_PKG.CURRENCY_TYPE;
BEGIN
  -- Do something
  v_value := in_value1 + in_value2;
  -- Output formatted value
  DBMS_OUTPUT.PUT_LINE( CURRENCIES_PKG.formatCurrency( v_value ) );
END;
/


  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. SQL क्वेरी, औसत चढ़ाई और जोड़ी जो सबसे अधिक चोटियों पर चढ़ी है

  3. JMeter - 1 JDBC से दूसरे JDBC में कई मान पास करना

  4. एक स्कीमा को दूसरे नए स्कीमा में आयात करें - Oracle

  5. संपूर्ण क्वेरी निष्पादित किए बिना गतिशील क्वेरी में उपयोग किए गए कॉलम को कैसे खोजें