SQL में इस तरह के डायनेमिक SQL को DBMS_XMLGEN.getXML
. के साथ बनाया जा सकता है . हालांकि क्वेरी थोड़ी अजीब लगती है, इसलिए हो सकता है कि आप एक अलग डिज़ाइन पर विचार करना चाहें।
सबसे पहले, मैंने आपके डीडीएल का उपयोग करके एक नमूना तालिका और पंक्ति बनाई। मुझे यकीन नहीं है कि आप शर्तों के साथ क्या करने की कोशिश कर रहे हैं, इसलिए मैंने उन्हें सरल परिस्थितियों के साथ दो पंक्तियों में सरल बना दिया। पहली पंक्ति पहली शर्त से मेल खाती है, और कोई भी पंक्ति दूसरी शर्त से मेल नहीं खाती।
--Create sample table and row that matches the condition.
CREATE TABLE test_tab(
date_column DATE,
frequency NUMBER,
test_statement VARCHAR2(255)
)
/
insert into test_tab values(sysdate, 1, 'frequency = 1');
insert into test_tab values(sysdate, 2, '1=2');
commit;
यहां बड़ी क्वेरी है, और यह केवल पहली पंक्ति देता है, जो केवल पहली शर्त से मेल खाती है।
--Find rows where ROWID is in a list of ROWIDs that match the condition.
select *
from test_tab
where rowid in
(
--Convert XMLType to relational data.
select the_rowid
from
(
--Convert CLOB to XMLType.
select xmltype(xml_results) xml_results
from
(
--Create a single XML file with the ROWIDs that match the condition.
select dbms_xmlgen.getxml('
select rowid
from test_tab where '||test_statement) xml_results
from test_tab
)
where xml_results is not null
)
cross join
xmltable
(
'/ROWSET/ROW'
passing xml_results
columns
the_rowid varchar2(128) path 'ROWID'
)
);