我有一条如下所示的SQL语句。在这种情况下,我希望拥有像'X','Y','Z'
这样的IN子句值,并且该值可能会根据不同的条件而有所不同。但是,当我在运行时提供此值时,SQL语句未提供任何输出。
SELECT test,test1,test2
FROM test_n
WHERE NVL(code,'X') in(:code);
这里
:code = 'X','Y','Z'
有人可以帮助我吗?
我也无法使用匿名块或函数来实现这一目标。
答案 0 :(得分:0)
您可以通过引用字符串( substitution 变量)来使用DEFINE
SET DEFINE ':'
DEFINE code = "'X','Y','Z'"
SELECT test,test1,test2
FROM test_n
WHERE NVL(code,'X') in(:code);
如果您想使用真实的 bind 变量,则可以使用LIKE
语句尝试类似的操作。
set define off
VARIABLE code VARCHAR2
EXEC :code := 'X,Y,Z'
select test,test1,test2
from test_n
where ',' || :code || ',' like '%,' || code || ',%'
;
答案 1 :(得分:0)
您可以使用类似:
AutoGenerateColumns="False"