Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn sử dụng một câu lệnh trong cột VARCHAR2

Loại SQL động này trong SQL có thể được tạo bằng DBMS_XMLGEN.getXML . Mặc dù truy vấn trông hơi kỳ quặc, vì vậy bạn có thể muốn xem xét một thiết kế khác.

Đầu tiên, tôi đã tạo một bảng và hàng mẫu bằng cách sử dụng DDL của bạn. Tôi không chắc chính xác những gì bạn đang cố gắng thực hiện với các điều kiện, vì vậy tôi đã đơn giản hóa chúng thành hai hàng với các điều kiện đơn giản hơn. Hàng đầu tiên phù hợp với điều kiện đầu tiên và không hàng nào phù hợp với điều kiện thứ hai.

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

Đây là truy vấn lớn và nó chỉ trả về hàng đầu tiên, chỉ phù hợp với điều kiện đầu tiên.

--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. 2 cách tạo bảng nếu nó chưa tồn tại trong Oracle

  2. Câu lệnh cập nhật Oracle với chức năng nhóm

  3. Lỗi Oracle.DataAccess

  4. đối chiếu sql oracle

  5. ORA-00979 không phải là một nhóm theo biểu thức