存储过程可以正常执行,但用友U8的UAP报表查询结果却为空

近期根据甲方需求做了一张简单的UAP报表,由于需要过滤条件所以写的是存储过程,设置了几个参数

写好的存储过程直接执行后没有问题,四个参数都是传递的nulll值:

DECLARE    @return_value int

EXEC    @return_value = [dbo].[qijun_zuixindanjia]
        @cinvcode = NULL,
        @cfree1 = NULL,
        @vendor = NULL,
        @cbustype = NULL

SELECT    'Return Value' = @return_value

结果如下:

存储过程可以正常执行,但用友U8的UAP报表查询结果却为空_第1张图片

但是发布到U8后,怎么查询都没有结果,可是存储过程明明可以正常执行,那问题只能出现在UAP平台里面了

仔细想了一下,这一次报表添加的过滤条件是之前没有用过的,有可能这个过滤条件UAP传递的参数值不是null而是空值

于是我重新执行一下存储过程,这次参数不用NULL,而是用空字符串:

DECLARE    @return_value int

EXEC    @return_value = [dbo].[qijun_zuixindanjia]
        @cinvcode ='',
        @cfree1 = '',
        @vendor = '',
        @cbustype = ''

SELECT    'Return Value' = @return_value

查询结果确实是空:

存储过程可以正常执行,但用友U8的UAP报表查询结果却为空_第2张图片

看来最大的可能原因是,用友UAP对于某些查询条件默认传递的是空字符串,在存储过程将参数值强制设置为null就可以了:

if @cinvcode=''  set @cinvcode=null
if @cfree1='' set @cfree1=null
if @vendor='' set @vendor=null
if @cbustype='' set @cbustype=null

修改后UAP平台就可以正常查询出结果了:

存储过程可以正常执行,但用友U8的UAP报表查询结果却为空_第3张图片

你可能感兴趣的:(存储过程可以正常执行,但用友U8的UAP报表查询结果却为空)