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

में डालें... चुनें... सबक्वायरी के साथ या कॉलम ऑर्डर के बिना

नहीं, आप SQL स्टेटमेंट के हिस्से के रूप में कॉलम सूची बनाने के लिए सबक्वेरी का उपयोग नहीं कर सकते।

आप डेटा डिक्शनरी से पूरा स्टेटमेंट जेनरेट कर सकते हैं:

select 'insert into cl ("'
  || listagg(column_name, '","') within group (order by column_id)
  || '") select "'
  || listagg(column_name, '","') within group (order by column_id)
  || '" from clt'
from user_tab_columns where table_name = 'CLT';

और फिर या तो उसे कॉपी और पेस्ट करें, या किसी अनाम ब्लॉक से डायनेमिक SQL का उपयोग करें:

declare
  stmt varchar2(4000);
begin
  select 'insert into cl ("'
    || listagg(column_name, '","') within group (order by column_id)
    || '") select "'
    || listagg(column_name, '","') within group (order by column_id)
    || '" from clt'
  into stmt
  from user_tab_columns where table_name = 'CLT';

  dbms_output.put_line(stmt); -- to check and debug
  execute immediate stmt;
end;
/

कुछ डमी टेबल के साथ:

create table clt (col1 number, col2 date, col3 varchar2(10));
create table cl (col3 varchar2(10), col1 number, col2 date);

insert into clt (col1, col2, col3) values (42, date '2018-07-12', 'Test');

insert into cl
select * from clt;

SQL Error: ORA-00932: inconsistent datatypes: expected NUMBER got DATE

उस ब्लॉक को चलाने से यह मिलता है:

insert into cl ("COL1","COL2","COL3") select "COL1","COL2","COL3" from clt

PL/SQL procedure successfully completed.

select * from cl;

COL3             COL1 COL2      
---------- ---------- ----------
Test               42 2018-07-12

आप उस अनाम ब्लॉक को एक ऐसी प्रक्रिया में भी बदल सकते हैं जिसमें दो टेबल नाम होते हैं यदि यह ऐसा कुछ है जिसे आप अक्सर करना चाहते हैं (आपने कहा था कि इसे पुन:प्रयोज्य होने की आवश्यकता है, लेकिन इसका मतलब उसी टेबल के लिए हो सकता है, और बस हो सकता है एक स्क्रिप्ट में एक ब्लॉक)।

आप आगे भी जा सकते हैं और केवल उन स्तंभों को शामिल कर सकते हैं जो दोनों तालिकाओं में दिखाई देते हैं, या सत्यापित करें कि डेटा प्रकार सटीक रूप से मेल खाते हैं; हालांकि यह थोड़ा और काम है और जरूरी नहीं भी हो सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL - सप्ताह के अनुसार योग और समूह डेटा

  2. एक्सएमएल को सीएलओबी कॉलम से एक्सएमएल टाइप कॉलम में कनवर्ट करते समय त्रुटि

  3. Oracle में कार्यदिवसों की पहचान कैसे करें?

  4. Oracle डेटाबेस से SQL का उपयोग करके XML क्लॉब से डेटा निकालें

  5. Oracle sql में तालिका 1 से तालिका 2 में आईडी कैसे अपडेट करें?