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

वर्चुअल कॉलम एक्सप्रेशन में संख्याओं को जोड़ना ORA-12899 फेंकता है:कॉलम के लिए मान बहुत बड़ा है

आपकी संख्या सीमित नहीं है। एकल अंक (सकारात्मक) संख्याओं के साथ आप पता है कि समेकित लंबाई केवल तीन हो सकती है, लेकिन वर्चुअल कॉलम किसी भी संख्या के लिए काफी बड़ा होना चाहिए - इसलिए ऐसा लगता है कि यह निहित प्रारूप मॉडल (38 महत्वपूर्ण अंक, दशमलव विभाजक, और चिह्न) के लिए 40 अंकों तक की अनुमति दे रहा है; @colspar's लेक्सिकलाइज़ेशन )।

ऐसा कहने के बाद, संख्या कॉलम को सीमित करना वर्चुअल कॉलम लंबाई में प्रतिबिंबित नहीं होगा - दोनों कॉलम NUMBER(1,0) बनाना अभी भी 81 वर्णों की आवश्यकता वाले संघटन को छोड़ देता है। जेनरेट किए गए मान का सबस्ट्रिंग लेना या तो काम नहीं करेगा , इस मामले में ORA-12899: value too large for column "TEXT" (actual: 10, maximum: 40) . प्रत्येक to_char() . के लिए एक प्रारूप मॉडल प्रदान करना कॉल, उदा. का FM999 ), काम करेगा लेकिन सीधे समग्र लंबाई के बजाय अंडरस्कोर के दोनों ओर के मानों को प्रतिबंधित करता है।

यदि आप कॉलम आकार को प्रतिबंधित करना चाहते हैं, तो आप इसे उसी डेटा प्रकार और आकार में डाल सकते हैं, जो अधिक स्पष्ट है:

text VARCHAR2(10) generated always as 
    (cast(to_char(id)||'_'||to_char(num) as VARCHAR2(10))) VIRTUAL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एंटरप्राइज़ लाइब्रेरी ODP.NET कॉल रिटर्न ORA-06502:PL/SQL:संख्यात्मक या मान त्रुटि

  2. पैकेज विनिर्देश में फ़ंक्शन घोषित किए बिना पैकेज में SQL क्वेरी में किसी फ़ंक्शन को कॉल करते समय त्रुटि प्राप्त करना

  3. बाहरी तालिका का स्थान और फ़ाइल नाम प्राप्त करना?

  4. ऑरैकल 10 जी में, मैं लूप में उपयोगकर्ता इनपुट कैसे स्वीकार करूं?

  5. लिक्विबेस स्क्रिप्ट ORA-01843 लौटाती है:मान्य माह नहीं