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

तालिका में संग्रहीत तालिका और स्तंभ नाम को क्वेरी करें

SQL टेक्स्ट बनाने के लिए पीटर एम की क्वेरी का उपयोग करना, और फिर XML की डार्क पावर का उपयोग करना:

create table attributes (id, entity_id, table_name, column_name)
as
select 1, 3, 'VALUES_A', 'VALUE_1' from dual union all
select 2, 2, 'VALUES_B', 'VALUE_3' from dual union all
select 3, 2, 'VALUES_A', 'VALUE_2' from dual;

create table values_a (entity_id, value_1, value_2, value_3)
as
select 1, 'Monday', 42, 'Green' from dual union all
select 2, 'Sunday', 3000, 'Blue' from dual union all
select 3, 'Wednesday', 1, 'Black' from dual;

create table values_b (entity_id, value_1, value_2, value_3)
as
select 1, 'Tuesday', 26, 'Green' from dual union all
select 2, 'Saturday', 3, 'Red' from dual union all
select 3, 'Wednesday', 15, 'White' from dual;

प्रश्न:

with queries as
     ( select table_name, column_name, entity_id
            , 'select '|| column_name || ' as c from ' || table_name ||
             ' where entity_id = ' || entity_id ||
              case
                  when id = max_id then ''
                  else ' union all '
              end as sqltext
       from 
           ( select a.*, max(a.id) over (order by id) max_id from attributes a ) )
select table_name, column_name, entity_id
     , extractvalue(xmltype(dbms_xmlgen.getxml(sqltext)),'/ROWSET/ROW/C') as sql_result
from   queries;

परिणाम:

TABLE_NAME COLUMN_NAME  ENTITY_ID SQL_RESULT
---------- ----------- ---------- ---------------------------------------------------
VALUES_A   VALUE_1              3 Wednesday
VALUES_B   VALUE_3              2 Red
VALUES_A   VALUE_2              2 3000


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एंटरप्राइज़ प्रबंधक 11g FMW नियंत्रण R12.2 . में

  2. Oracle में ROUND (तारीख) फंक्शन

  3. Oracle OleDb कनेक्शन खोलना सफल होता है, जबकि प्रबंधित ड्राइवर कनेक्शन विफल रहता है

  4. हाइबरनेट + ओरेकल क्लॉज लिमिटेशन में, इसे कैसे हल करें?

  5. Oracle SQL - किसी कॉलम के उच्चतम 5 मान कैसे प्राप्त करें