SQL中的强制和非强制字段

时间:2016-07-11 04:41:40

标签: sql oracle11g bi-publisher

我有两个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级别本身的问题。

1 个答案:

答案 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