可以在存储过程中判断
假设 你的存储过程是
PROCEDURE MO_Report_MInventory_Proceduer @starttime date,@endtime date,@MoCode nvarchar(100),@DocnoLine nvarchar(100),@ItemCode nvarchar(100)
DECLARE @SQL_ nvarchar(max)
set @SQL_='WHERE 开始日期>=''+CONVERT(NVARCHAR(20),@starttime)+'' AND 开始日期<=''+CONVERT(NVARCHAR(20),@endtime)+'''
if (isnull(@MoCode,'')='') begin
set @SQL_=@SQL_
end
else begin
set @SQL_=CONCAT(@SQL_,' AND MoCode=''+CONVERT(NVARCHAR(20),@MoCode)+''')
end
if (isnull(@DocnoLine,'')='') begin
set @SQL_=@SQL_
end
else begin
set @SQL_=CONCAT(@SQL_,' AND DocnoLine=''+CONVERT(NVARCHAR(20),@DocnoLine)+''')
end
if (isnull(@ItemCode,'')='') begin
set @SQL_=@SQL_
end
else begin
set @SQL_=CONCAT(@SQL_,' AND ItemCode=''+CONVERT(NVARCHAR(20),@ItemCode)+''')
end
-----------
EXEC 存储过程的时候后面三个参数直接传空值不传NULL