【发布时间】:2017-01-03 16:14:22
【问题描述】:
在 Oracle 中,下面的查询在单列上运行良好,但是当我尝试放置多列时它失败了,实际上我的要求是如果特定表中没有记录及其复杂的内部查询,则退出 SQL 查询(以下是简化的问题描述),我不能使用 PL/SQL 块,请建议。
SQL> select
case when (select count(*) from bl1_charge_adj where rownum=1) = '1' then ( select customer_id from customer)
else 44 END as ee
from dual;
EE
----------
44
SQL> select
case when (select count(*) from bl1_charge_adj where rownum=1) = '1' then ( select customer_id,DL_UPDATE_STAMP from customer)
else (1,2) END
from dual
第 1 行出现错误:
ORA-00907: 缺少右括号
【问题讨论】:
-
这是正确的。
case是一个标量表达式,意味着它返回一个值。样本数据和期望的结果将有助于解释您想要做什么。 -
如果查询中涉及的 4 个表之一为空,我的要求是立即退出复杂的 SQL 查询(因为我不能使用 pl/sql,所以我正在尝试使用 CASE 来实现这一点,请建议是否我还有其他方法可以使用 SQL)
-
请不要用 cmets 澄清问题,而是编辑问题
-
edit 您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted text 请no screen shots