Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie za pomocą instrukcji w kolumnie VARCHAR2

Ten rodzaj dynamicznego SQL w SQL można utworzyć za pomocą DBMS_XMLGEN.getXML . Chociaż zapytanie wygląda nieco dziwnie, możesz rozważyć inny projekt.

Najpierw utworzyłem przykładową tabelę i wiersz za pomocą twojego DDL. Nie jestem pewien, co dokładnie chcesz zrobić z warunkami, więc uprościłem je do dwóch wierszy z prostszymi warunkami. Pierwszy wiersz pasuje do pierwszego warunku, a żaden wiersz nie pasuje do drugiego warunku.

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

Oto duże zapytanie, które zwraca tylko pierwszy wiersz, który pasuje tylko do pierwszego warunku.

--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. wyświetlanie wyników w pionie w Oracle

  2. jak zmienić datę na godzinę w Oracle 10g

  3. SQL*Plus nie wykonuje skryptów SQL, które robi SQL Developer

  4. Jaka jest różnica między połączeniem sterownika OCI i THIN a połączeniem ze źródłem danych między java a Oracle XE?

  5. jak wstawić aktualną datę do pola DATE w formacie dd/mm/rrrr w Oracle