你能帮我解决 where 子句中 case when 的一个条件吗? 我尝试过构建类似的东西,但 apex 接口返回错误:
where
tmp.employee_name in
(case when :APP_USER = 'xxx.xxx' THEN ('yyy.yyy', 'aaa.aaa')
when :APP_USER = 'ddd.ddd' THEN ('xxx.xxx', 'uuu.uuu')
end)
Apex 返回错误,例如:
"ORA-20999: Failed to parse SQL query! ORA-06550: line 17, column 85: ORA-00907: missing right parenthesis"
当我只使用像 THEN ('yyy.yyy')
这样的一个值时,一切都可以,但我需要使用几个变量。
感谢您的帮助!
A
CASE
表达式返回标量值,而不是表达式(或表达式列表)。
而是使用
AND
和 OR
:
WHERE ( :APP_USER = 'xxx.xxx'
AND tmp.employee_name in ('yyy.yyy', 'aaa.aaa')
)
OR ( :APP_USER = 'ddd.ddd'
AND tmp.employee_name in ('xxx.xxx', 'uuu.uuu')
)