आपके तत्काल प्रश्न का उत्तर यह है कि आपको ORA-01031: insufficient privileges
. मिलता है क्योंकि आपके उपयोगकर्ता के पास भूमिका के माध्यम से दी गई तालिका बनाएं विशेषाधिकार है:Oracle सुरक्षा मॉडल एक नियम लागू करता है कि हम PL/SQL में भूमिकाओं के माध्यम से दिए गए विशेषाधिकारों का उपयोग नहीं कर सकते हैं। इसलिए आपको अपने उपयोगकर्ता को सीधे टेबल बनाने का विशेषाधिकार देने के लिए अपने डीबीए की आवश्यकता है।
या आप करते हैं?
क्योंकि आप जो करने की कोशिश कर रहे हैं वह ओरेकल में समझ में नहीं आता है। Oracle में वैश्विक अस्थायी तालिकाएं स्थायी हैं संरचनाएं; यह सिर्फ उनमें डेटा है जो अस्थायी है। तो, किसी अन्य डेटाबेस ऑब्जेक्ट की तरह, सामान्य डीडीएल स्क्रिप्ट के साथ एक बार तालिका बनाना सही समाधान है। फिर आप अपनी आवश्यकता के अनुसार केवल वैश्विक अस्थायी तालिका में सम्मिलित कर सकते हैं।
आप इस साइट पर यह गलती करने वाले पहले व्यक्ति नहीं हैं (इस प्रासंगिक सूत्र को पढ़ें)। अक्सर ऐसा इसलिए होता है क्योंकि लोग किसी अन्य डेटाबेस से आ रहे हैं जैसे SQL सर्वर जिसमें "अस्थायी तालिका" नामक एक निर्माण होता है जो वास्तव में ओरेकल की वैश्विक अस्थायी तालिकाओं से अलग होता है। यदि यह आपका परिदृश्य है तो आप Oracle 18c नई सुविधा में रुचि लेंगे, जिसे Private Temporary Tables कहा जाता है। ये SQL सर्वर अस्थायी तालिकाओं के बिल्कुल अनुरूप हैं। और जानें।