我可以单独使用查询作为pl / sql中的过滤器吗?

问题描述

我知道我在问题标题中没有明确说明。让我解释一下。

说我有一个表SOURCE_TABLE,其中有1列看起来像这样:

Filter 
------------------|
Name='John' 
Surname = 'Smith' 
Age = '25'

我想将此表用作过滤器。如下所示:

SELECT * FROM TARGET_TABLE WHERE (SELECT FILTER FROM SOURCE_TABLE)

我听说也许评估功能可以帮助我,但老实说,我不明白该怎么做。

您知道有什么方法可以将列用作我的过滤器源吗?


Edit1:

DECLARE 
    my_filter VARCHAR2(100); 
    my_query VARCHAR2(500); 
BEGIN 
    my_query := 'SELECT FILTER FROM SOURCE_TABLE WHERE ROWNUM=1'; 
    EXECUTE IMMEDIATE my_query INTO my_filter; 
    EXECUTE IMMEDIATE 'SELECT * FROM TARGET_TABLE WHERE '|| my_filter; 
END; 

@Sujitmohanty30我在学习EXECUTE IMMEDIATE之后提出了上述建议。但是我偶然发现了一个问题。关于最终结果,这应该是动态的,我希望最后看到选择查询的结果。

解决方法

假设我们有以下两个表格:

create table TARGET_TABLE(name varchar2(30),surname varchar2(30));
insert into TARGET_TABLE(name,surname) values ('John','Doe');
insert into TARGET_TABLE(name,surname) values ('Ann','Smith');
insert into TARGET_TABLE(name,surname) values ('Steven','Feuerstein');
insert into TARGET_TABLE(name,'King');
commit;

create table SOURCE_TABLE(filter) as
select q'[name='John']' from dual union all
select q'[name='Ann']' from dual union all
select q'[name='Steven' and surname='King']' from dual union all
select q'[surname='Feuerstein']' from dual;

然后,您可以使用xmltable和dbms_xmlgen.getXMLtype动态获取此类行:

https://dbfiddle.uk/?rdbms=oracle_18&fiddle=72abdf18b149cf30882cb4e1736c9c33

select *
from SOURCE_TABLE,xmltable(
        '/ROWSET/ROW'
        passing dbms_xmlgen.getXMLtype('select * from TARGET_TABLE where '|| SOURCE_TABLE.filter)
        columns 
          name    varchar2(30) path 'NAME',surname varchar2(30) path 'SURNAME'
        ) x;

结果:

FILTER                           NAME                           SURNAME
-------------------------------- ------------------------------ ------------------------------
name='John'                      John                           Doe
name='Ann'                       Ann                            Smith
name='Steven' and surname='King' Steven                         King
surname='Feuerstein'             Steven                         Feuerstein

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...