यह नेटिव डायनामिक SQL चलाने के लिए है। ।
डीएमएल के लिए आप इसका उपयोग उन बयानों को चलाते समय करेंगे जो आपके पास संकलन समय पर उपलब्ध नहीं हैं, उदा। यदि कॉलम सूची उपयोगकर्ता के चयन पर आधारित है।
आपके मामले में इसका उपयोग किया जा रहा है क्योंकि डीडीएल को पीएल/एसक्यूएल के भीतर से स्थिर एसक्यूएल के रूप में नहीं चलाया जा सकता है। केवल कुछ क्वेरी, DML और TCL कमांड मान्य हैंए> . किसी और चीज को गतिशील माना जाना चाहिए।
मैं कहूंगा कि पीएल/एसक्यूएल ब्लॉक से डीडीएल का उपयोग करना दुर्लभ है। TRUNCATE
उचित हो सकता है; अगर आपको कुछ भी वस्तु बनाते या गिराते हुए मिलते हैं तो यह एक चिंता का विषय हो सकता है क्योंकि यह एक उप-इष्टतम डेटा मॉडल का सुझाव दे सकता है।
EXECUTE IMMEDIATE
स्वयं स्वचालित रूप से प्रतिबद्ध नहीं होता है; लेकिन अगर आप डीडीएल को निष्पादित करते हैं तो वह वैसा ही व्यवहार करेगा जैसे कि आप इसे पीएल/एसक्यूएल के बाहर चलाते हैं, इसलिए यह आपके मामले में प्रतिबद्ध होगा, हां।
संयोग से, मुझे यकीन नहीं है कि आपका कोड बयान रखने के लिए मध्यवर्ती चर का उपयोग क्यों कर रहा है; यह उपयोगी है यदि आप यह प्रदर्शित करना चाहते हैं कि यह क्या चलाने जा रहा है, लेकिन आप ऐसा नहीं कर रहे हैं। आप क्या कर सकते थे:
EXECUTE IMMEDIATE 'TRUNCATE TABLE BD_BIDS_EXT_DET';
यानी V_SQL_1
. का उपयोग किए बिना बिल्कुल।