我正在执行这个存储过程,它工作正常,但是当我从前端调用时,它不返回任何行。
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'
请帮帮我-我怎么解决这个问题?
1条答案
按热度按时间ldioqlga1#
在前端,您传递的不是null而是一个空字符串,因此您的sp正在执行select,where on requestno等于一个空字符串,该字符串可能不会返回任何记录。