Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kueri menggunakan pernyataan dalam kolom VARCHAR2

SQL dinamis semacam ini dalam SQL dapat dibuat dengan DBMS_XMLGEN.getXML . Meskipun kuerinya terlihat agak aneh, jadi Anda mungkin ingin mempertimbangkan desain yang berbeda.

Pertama, saya membuat tabel dan baris sampel menggunakan DDL Anda. Saya tidak yakin persis apa yang Anda coba lakukan dengan kondisinya, jadi saya menyederhanakannya menjadi dua baris dengan kondisi yang lebih sederhana. Baris pertama cocok dengan kondisi pertama, dan tidak ada baris yang cocok dengan kondisi kedua.

--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;

Inilah kueri besar, dan hanya mengembalikan baris pertama, yang hanya cocok dengan kondisi pertama.

--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'
    )
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah Kunci Utama

  2. Cara membagi objek CLOB menggunakan , dan :pembatas di Oracle menjadi beberapa catatan

  3. Bagaimana cara memanggil paket dari php yang memiliki prosedur di Oracle menggunakan driver oci?

  4. ADD_MONTHS() Fungsi di Oracle

  5. Instalasi APEX gagal, PLS-00201:pengenal 'SYS.DBMS_DB_VERSION' harus dideklarasikan