0

在我的查询中(请注意,我没有使用过程)我需要使用一个布尔参数来定义是否过滤掉某些记录。

我的参数名称是“WO”(= 没有)。所以 - 如果用户选择&WO = 'TRUE'我想要过滤掉一些记录。

我的方法是在 where 子句中使用“case when”,如下所示:

select *
from tbl1
where case when &WO = 'TRUE' then tbl1.field1 not in ('AB','CD','EF') end

我知道语法或我的整个方法不正确。

4

1 回答 1

2

你不能那样使用case;a 的结果case需要与某物进行比较。你可以这样做:

select *
from tbl1
where nvl('&WO', 'FALSE') != 'TRUE'
or tbl1.field1 not in ('AB','CD','EF')

如果第一部分or等于 false - 即是否&WO为空TRUE- 则不评估第二部分。

于 2013-05-19T15:13:45.553 回答