आम तौर पर आप अपनी पीएल/एसक्यूएल प्रक्रिया के अंदर डीडीएल (बनाना, बदलना, छोड़ना) नहीं करते हैं। यदि आपको कुछ अस्थायी डेटा संग्रहीत करने के लिए तालिका की आवश्यकता है, तो आप अस्थायी टेबल इस काम के लिए। आपके मामले में मैं पहले टेबल बनाऊंगा
CREATE GLOBAL TEMPORARY TABLE T1
(
col1 VARCHAR2(128),
col2 VARCHAR2(128),
col3 NUMBER(3) NOT NULL,
col3 FLOAT(100)
);
CREATE GLOBAL TEMPORARY TABLE T2 AS
SELECT * FROM other_table WHERE 1 = 0;
और फिर प्रक्रिया इस तरह दिखेगी
DECLARE
CURSOR CUR IS ...
BEGIN
FOR rec IN CUR
LOOP
--Do stuff here
END LOOP;
DELETE FROM T1;
DELETE FROM T2;
END;
/
बेशक उसके बाद टेबल नहीं गिराए जाएंगे, लेकिन मुझे लगता है कि आप अपनी पीएल/एसक्यूएल प्रक्रिया का नियमित रूप से उपयोग करना चाहते हैं, न कि केवल एक बार, है ना?
यदि आप अभी भी अपनी प्रक्रिया में डीडीएल का प्रदर्शन करना चाहते हैं, तो आपको डायनामिक एसक्यूएल (तुरंत निष्पादित करें)। हालाँकि आपको इस बात की जानकारी होनी चाहिए कि डीडीएल संचालन निहित कार्य करता है, इसलिए आपकी प्रक्रिया एक एकल परमाणु लेनदेन नहीं होगी।