我在尝试检索作为UNION ALL查询一部分的子查询之一中的硬编码值(''
)时面临oracle错误00923。
select p.owner,
p.exception_id,
p.status,
p.product_id,
p.event_id
from exception p, exception c
where c.Parent_Id = p.Exception_Id
AND c.Owner_COID = p.Owner_COID
UNION ALL
select p.owner,
p.exception_id,
p.status,
'',
''
from exception p
and not exists (select * from bb_Exception c
WHERE c.Parent_Id = p.Exception_Id);
有人可以帮我解决这个问题吗?
由于
答案 0 :(得分:0)
UNION ALL的后半部分没有WHERE子句!
from exception p
and not exists (select * from b
应该是
from exception p
where not exists (select * from b
修复后,如果p.product_id
或p.event_id
是数字(如ID所预期的那样),那么您应该得到以下异常:
ORA-01790: expression must have same datatype as corresponding expression
使用null
而不是空字符串的解决方案。 Oracle将它们视为等效,但''
是varchar2数据类型而null
不是。