【发布时间】:2021-01-05 01:53:57
【问题描述】:
我知道我没有在问题标题中说清楚。让我解释一下。
假设我有一个表 SOURCE_TABLE,其中 1 列如下所示:
Filter
------------------|
Name='John'
Surname = 'Smith'
Age = '25'
我想用这个表作为过滤器。如下:
SELECT * FROM TARGET_TABLE WHERE (SELECT FILTER FROM SOURCE_TABLE)
我听说评估功能可能对我有帮助,但老实说我不明白如何。
你知道有什么方法可以像上面那样使用列作为我的过滤器源吗?
编辑1:
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后想出了上面的。但是我偶然发现了一个问题。对于最终结果,这需要是动态的,我想在最后看到选择查询的结果。
【问题讨论】:
-
这种类型的需求需要动态构建SQL,你可以在oracle中使用
execute immediate实现同样的效果。你还好吗? -
还有xmltable/xmlquery解决方案。我回家后会发布它
-
请不要在 cmets 中添加代码。 edit 改为您的问题
标签: sql oracle plsql dynamic-sql