मुझे लगता है कि आप निम्न जैसा कुछ कर रहे हैं:
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
इससे बचाव में मदद करने के लिए।