Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पीएल/एसक्यूएल में डीडीएल स्टेटमेंट?

मुझे लगता है कि आप निम्न जैसा कुछ कर रहे हैं:

declare
   v_temp varchar2(20);
begin
   execute immediate 'create table temp(name varchar(20))';
   execute immediate 'insert into temp values(''XYZ'')';

   select name into v_name from temp;
end;

संकलन समय पर तालिका, TEMP , मौजूद नहीं है . यह अभी तक नहीं बनाया गया है। चूंकि यह मौजूद नहीं है, आप इसमें से चयन नहीं कर सकते; इसलिए आपको गतिशील रूप से चयन भी करना होगा। इस विशेष . में वास्तव में एक चयन करने की कोई आवश्यकता नहीं है हालांकि आप इसमें वापस आने का उपयोग कर सकते हैं वाक्य रचना।

declare
   v_temp varchar2(20)
begin
   execute immediate 'create table temp(name varchar2(20))';
   execute immediate 'insert into temp 
                      values(''XYZ'')
                      returning name into :1'
                returning into v_temp;
end;

हालांकि, तालिकाओं को गतिशील रूप से बनाने की आवश्यकता सामान्य रूप से एक बुरी तरह से डिज़ाइन किए गए स्कीमा का संकेत है। यह वास्तव में आवश्यक नहीं होना चाहिए।

मैं Rene Nyffenegger's की अनुशंसा कर सकता हूं पोस्ट "डायनामिक SQL खराब क्यों है?" प्रदर्शन के दृष्टिकोण से, यदि संभव हो तो आपको डायनेमिक SQL से बचना चाहिए। कृपया यह भी जान लें कि आप के लिए अधिक खुले हैं। SQL इंजेक्शन और बाइंड वैरिएबल और DBMS_ASSERT इससे बचाव में मदद करने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01403:सेलेक्ट इन . के लिए कोई डेटा नहीं मिला

  2. Oracle पर ORDER के साथ INSERT करें

  3. केवल एक आईडी नंबर प्रदर्शित करने के लिए विशिष्ट फ़ील्ड और पंक्ति संख्या का चयन करने से डुप्लिकेट डेटा मिलता है

  4. मैं अलग-अलग मामलों में तालिका कॉलम द्वारा कैसे क्रमबद्ध कर सकता हूं (ओरेकल)

  5. डेटा प्रवाह कार्य के लिए फ़ोरैच लूप कंटेनर