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

Oracle में तत्काल निष्पादन का उपयोग करके तालिका में डेटा सम्मिलित करना

आप या तो पहली क्वेरी का परिणाम एक (दिनांक) चर में प्राप्त कर सकते हैं और फिर उसका उपयोग कर सकते हैं:

SELECT sysdate into query_date FROM dual;
insert into test (my_date) values (query_date)
-- or if you really want dynamic SQL, with a bind variable
EXECUTE IMMEDIATE 'insert into test (my_date) values (:query_date)' using query_date;

या अपने प्रश्न को शाब्दिक रूप से पढ़ते हुए, पहली स्ट्रिंग को दूसरी स्ट्रिंग के हिस्से के रूप में जोड़कर उसका उपयोग करें:

query_date := "SELECT sysdate FROM dual";
EXECUTE IMMEDIATE 'insert into test (my_date) ' || query_date;

यदि आप दूसरे कथन को निष्पादित करने के बजाय उसका प्रिंट आउट लेते हैं तो आप देखेंगे:

insert into test (my_date) SELECT sysdate FROM dual

... जो वैध एसक्यूएल है। यह काम करेगा अगर query_string अधिक जटिल है या स्वयं गतिशील रूप से निर्मित किया जा रहा है। लेकिन अगर query_string . में कॉलम एक्सप्रेशन की संख्या चयन सूची भी भिन्न होती है, आपको कॉलम सूची को गतिशील रूप से भी बनाना होगा, अन्यथा आपके पास सम्मिलित करने के लिए बहुत अधिक या बहुत कम कॉलम होंगे।

वास्तव में आप यह कैसे करते हैं यह इस बात पर निर्भर करता है कि आप क्वेरी स्ट्रिंग कैसे बना रहे हैं - अनिवार्य रूप से जब आप क्वेरी स्ट्रिंग में अभिव्यक्ति जोड़ते हैं, तो आप एक अलग सूची में कॉलम नाम भी जोड़ देंगे, और इसके साथ समाप्त होगा:

EXECUTE IMMEDIATE 'insert into test (' || column_list ' ||) ' || query_string);

जहां column_list col1, col2 . के रूप में बनाया गया है और query_string select x.col1, y.col2 from ...

आपने जो दिखाया है उसमें डायनामिक एसक्यूएल का उपयोग करने का कोई स्पष्ट कारण नहीं है। या, यदि आप वास्तव में sysdate का उपयोग कर रहे हैं, तो इसे प्राप्त करने के लिए अलग क्वेरी की आवश्यकता है, जैसा कि आप कर सकते हैं:

insert into test (my_date) values (sysdate)

... इसलिए मुझे लगता है कि आपका वास्तविक परिदृश्य वास्तव में अधिक जटिल है। लेकिन ध्यान दें कि आप values . का उपयोग नहीं करते हैं एक insert ... select ... नमूना। आप एकल कॉलम और सबक्वेरी के साथ कर सकते हैं लेकिन यह तब भी एक अच्छा विचार नहीं है, और यदि आपके पास सबक्वेरी में कई कॉलम हैं तो यह काम नहीं करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस में स्टोर करने के लिए वर्णों के अनुक्रम को दिनांक प्रारूप में कैसे परिवर्तित करें?

  2. फ़ाइल या असेंबली लोड नहीं कर सका Oracle.DataAccess

  3. SQLcl (Oracle) में अपने क्वेरी परिणामों को प्रारूपित करने के 2 तरीके

  4. क्या ओरेकल डेटाबेस में ऑटो-इंक्रिमेंटिंग ग्रिड प्राथमिक कुंजी बनाने का कोई तरीका है?

  5. विजुअल स्टूडियो 2010 से Oracle के साथ काम करने के लिए क्या आवश्यक है?