在开发销售帐期分析表的时候,发现有部分数据明明是有的,参数传空的时候就抓不出来。百思不得其解
如果报表参数不是必输的情况下,一般我们都会有2种写法:
and (p_district is null or hz.territory_id=p_district)
或者
and hz.territory_id= nvl( p_district, hz.territory_id)
这2种写法看似一样,其实跑出来的结果很可能不一样。
我在报表采用的是nvl写法,后来改成 or 就都抓出来了。
原因是,当 hz.territory_id 本身为 null 的情况,nvl 写法就是 false 了,就会抓不出数据来。
所以当hz.territory_id 确定以及肯定不会有null的情况,2种写法都ok,
如果是hz.territory_id 有可能为 null,那么就最好采用 or 的写法
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26373197/viewspace-2016847/ ,如需转载,请注明出处,否则将追究法律责任。