在使用带有 where 子句的 case 时出现错误 ORA-00905:
between
上缺少关键字
SELECT 1 FROM TABLE T, TABLEAAA O
WHERE T.ID = O.ID
AND (CASE WHEN :P_PIM_DATE1 IS NOT NULL AND :P_PIM_DATE2 IS NOT NULL) THEN T.F_DATE BETWEEN :P_PIM_DATE1 AND :P_PIM_DATE2 END)
您发布的查询没有多大意义。您试图说出当参数(前面带有冒号;这些是某种参数,不是吗?)不为空时该怎么做。但是,您没有说当它们为为空时该怎么办。
也许您更愿意包含
NVL
函数,这样就可以满足这两个条件;像这样的:
select 1
from tablea t join tableaaa o on o.id = t.id
where t.f_date between nvl(:P_PIM_DATE , trunc(sysdate))
and nvl(:P_PIM_DATE2, trunc(sysdate + 1));
返回
f_date
位于参数值之间或“今天”和“明天”之间的行。这只是一个例子,我不知道你到底想做什么。
(另外,也许您注意到,我切换到显式
join
。将 where
子句保留为过滤数据的条件)。