Oracle sql(和 Apex)在 where 子句中的情况

问题描述 投票:0回答:1

你能帮我解决 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')
这样的一个值时,一切都可以,但我需要使用几个变量。

感谢您的帮助!

sql oracle oracle-apex
1个回答
0
投票

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')
      )
© www.soinside.com 2019 - 2024. All rights reserved.