संपूर्ण पीएल/एसक्यूएल ब्लॉक को संकलन समय पर पार्स किया जाता है, लेकिन गतिशील कथन के भीतर पाठ का मूल्यांकन रनटाइम तक नहीं किया जाता है। (वे एक अनाम ब्लॉक के लिए एक ही चीज़ के करीब हैं, लेकिन फिर भी अलग-अलग चरण हैं)।
आपके if/else का मूल्यांकन रनटाइम तक भी नहीं किया जाता है। कंपाइलर यह नहीं जानता है कि जब तक आप अपना इंसर्ट करते हैं तब तक टेबल हमेशा मौजूद रहेगी, यह केवल यह जांच सकता है कि यह उस समय मौजूद है या नहीं, जब यह पूरे ब्लॉक को पार्स करता है।
यदि तालिका पहले से मौजूद है तो यह ठीक है; संकलक इसे देख सकता है, ब्लॉक निष्पादित होता है, आपका चयन 1 हो जाता है, और आप सम्मिलित करने के लिए अन्य में जाते हैं। लेकिन अगर यह मौजूद नहीं है तो ORA-00942 संकलन समय पर के साथ इन्सर्ट की पार्सिंग सही ढंग से विफल हो जाती है और ब्लॉक में कुछ भी निष्पादित नहीं किया जाता है।
चूंकि तालिका निर्माण गतिशील है, तालिका के सभी संदर्भों को भी गतिशील होना चाहिए - जैसा आपने देखा है, वैसे ही आपका सम्मिलन, लेकिन यदि आप इसे पूछते हैं तो भी। मूल रूप से यह आपके कोड को पढ़ने में बहुत कठिन बनाता है और सिंटैक्स त्रुटियों को छुपा सकता है - चूंकि गतिशील कोड रन-टाइम तक पार्स नहीं किया जाता है, और यह संभव है कि आप उस शाखा में गतिशील कथन में गलती कर सकते हैं जो हिट नहीं है एक लंबा समय।
वैश्विक अस्थायी तालिकाओं को वैसे भी उड़ान के दौरान नहीं बनाया जाना चाहिए। वे अस्थायी डेटा के साथ स्थायी ऑब्जेक्ट हैं, जो प्रत्येक सत्र के लिए विशिष्ट हैं, और आपके एप्लिकेशन कोड के हिस्से के रूप में बनाए/गिराए नहीं जाने चाहिए। (आम तौर पर आपके आवेदन द्वारा कोई स्कीमा परिवर्तन नहीं किया जाना चाहिए; त्रुटियों, डेटा हानि और अप्रत्याशित दुष्प्रभावों से बचने के लिए उन्हें अपग्रेड/रखरखाव परिवर्तनों तक सीमित किया जाना चाहिए और नियंत्रित किया जाना चाहिए; जीटीटी अलग नहीं हैं)।
<ब्लॉकक्वॉट>कुछ अन्य रिलेशनल डेटाबेस में अस्थायी तालिकाओं के विपरीत, जब आप Oracle डेटाबेस में एक अस्थायी तालिका बनाते हैं, तो आप एक स्थिर तालिका परिभाषा बनाते हैं। अस्थायी तालिका डेटा शब्दकोश में वर्णित एक स्थायी वस्तु है, लेकिन जब तक आपका सत्र तालिका में डेटा सम्मिलित नहीं करता तब तक खाली दिखाई देता है। आप डेटाबेस के लिए एक अस्थायी तालिका बनाते हैं, प्रत्येक PL/SQL संग्रहीत कार्यविधि के लिए नहीं।
एक बार जीटीटी बनाएं और अपने सभी पीएल/एसक्यूएल कोड को स्थिर बनाएं। यदि आप SQL सर्वर की स्थानीय अस्थायी तालिकाओं के करीब कुछ चाहते हैं तो PL/SQL संग्रह देखें।