Този вид динамичен SQL в SQL може да бъде създаден с DBMS_XMLGEN.getXML
. Въпреки че заявката изглежда малко странно, така че може да помислите за различен дизайн.
Първо, създадох примерна таблица и ред, използвайки вашия DDL. Не съм сигурен точно какво се опитвате да направите с условията, затова ги опростих в два реда с по-прости условия. Първият ред отговаря на първото условие и нито един ред не отговаря на второто условие.
--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'
)
);