我有两个SQL查询参数,如下所示
Select * from table1 where :B in B and (:C in C or :C is null)
要求:
:B是必填字段。如果此值为空,则不会显示记录
但是:C是非必需的字段。如果此值为null,则显示满足以下条件的所有记录:B。
注意:需要乘法选择对于:B和:C
问题:
if:C为null然后它工作正常。 如果:C只给出一个值作为输入,那么它也可以正常工作。但是当传递乘法值时,它没有按预期工作。在BI发布者中显示“无法加载XMl”错误
我在BI publisher.i中使用此查询想要解决SQL级别本身的问题。
答案 0 :(得分:0)
您的SQL语法是正确的。
select * from
(
select 'A1' A, 'B1' B, 'C1' C from dual
union
select 'A2' A, 'B2' B, '' C from dual
union
select 'A3' A, 'B3' B, 'C3' C from dual)
where B in('B1', 'B2')
and(C in('C1', 'C2') or C is null)
您必须查看BIP是否错误地构造SQL。启用BI日志并尝试提取正在运行的最终SQL,这将为您提供问题。
https://docs.oracle.com/cd/E14004_01/books/Reports/troubleshooting4.html http://bichaos.blogspot.com/2011/02/bi-publisher-11g-log-files-location.html