我需要能够根据传递的变量动态更改WHERE部分。例如
SELECT item,description
FROM TABLE WHERE department = :department
我正在尝试做的是,如果传递的变量是'NY',那么我想查询CT,NJ和NY中的状态,但如果变量是'CA',则只查询CA.在那里我可以在WHERE部分使用CASE WHEN语句吗?
我不能只使用SP或游标查询。
那就是
where (department in ('CT', 'NJ', 'NY') and :department = 'NY')
or (department = 'CA' and :department = 'CA')
我相信你想要的逻辑是:
where (department in ('CT', 'NJ', 'NY') and :department = 'NY') or
(department = :department)
这适用于任何州,而不仅仅是列出的四个州。
你也可以尝试这个,
INSTR(DECODE(:部门,'CA','CA','NY','CT,NJ,NY'),部门)> 0