आपकी संख्या सीमित नहीं है। एकल अंक (सकारात्मक) संख्याओं के साथ आप पता है कि समेकित लंबाई केवल तीन हो सकती है, लेकिन वर्चुअल कॉलम किसी भी संख्या के लिए काफी बड़ा होना चाहिए - इसलिए ऐसा लगता है कि यह निहित प्रारूप मॉडल (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