存储过程不接受null

eanckbw9  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(365)

我正在执行这个存储过程,它工作正常,但是当我从前端调用时,它不返回任何行。

ALTER PROCEDURE [dbo].[USP_GetRequest_DataListForViewPrint]
    @RequestNo VARCHAR(50) = null, 
    @FromDate varchar(50) = null,
    @ToDate varchar(50) = null
AS
BEGIN
    DECLARE @SQLStr varchar(8000), @WHERECRI VARCHAR(1000) = NULL

    IF (@RequestNo IS NOT NULL)
    BEGIN
        SET @WHERECRI = 'WHERE RequestNo='+ CHAR(39)+@RequestNo+ CHAR(39) ;
    END 
    ELSE  
    BEGIN
        SET @WHERECRI = ' WHERE RequestDate BETWEEN ' + CHAR(39) + CONVERT(varchar(10), CONVERT(datetime, @FromDate, 105), 102) + CHAR(39) + 'AND' + CHAR(39) + CONVERT(varchar(10), CONVERT(datetime, @ToDate, 105), 102)  + CHAR(39);
    END

    SET @SQLStr = 'SELECT Id, RequestStatus, RequestDate, RequestNo FROM CYGNUX_Request_Header ' + @WHERECRI;
    PRINT @SQLStr;

    EXEC(@SQLStr);
END

在前端,它以这种方式获取参数,并且不返回任何数据:

EXEC  USP_GetRequest_DataListForViewPrint  '', '08-06-2020 00:00:00','16-06-2020 00:00:00'

但如果我在SQLServer中这样执行它,它将返回数据。我不知道我的前端出了什么问题

EXEC  USP_GetRequest_DataListForViewPrint  null, '08-06-2020 00:00:00','16-06-2020 00:00:00'

请帮帮我-我怎么解决这个问题?

ldioqlga

ldioqlga1#

在前端,您传递的不是null而是一个空字符串,因此您的sp正在执行select,where on requestno等于一个空字符串,该字符串可能不会返回任何记录。

相关问题