我的查询是这样的,但它没有返回任何@value0、@value1、@value2、@value3、@field0 可变字段它们可能是空值或值取决于来自表单的参数。例如,当我输入这些值时,它什么也不返回
@page = 1,@size = 20,@sort = N'Id',@ts = N'DESC',@field0 = N'Name',@value2 = N' 2000-1-1',@value3=null,@value1=null,@value0=null 我做错了吗?
@page INT,
@size INT,@sort nvarchar(50) ,
@ts nvarchar(50) ,
@totalrow INT OUTPUT,
@value0 nvarchar(50),
@value1 nvarchar(50),
@value2 nvarchar(50),
@value3 nvarchar(50),
@field0 nvarchar(50)
AS
BEGIN
DECLARE @offset INT
DECLARE @newsize INT
DECLARE @sql NVARCHAR(MAX)
IF(@page=0)
begin
SET @offset = @page;
SET @newsize = @size
end
ELSE
begin
SET @offset = @page+1;
SET @newsize = @size-1
end
SET NOCOUNT ON;
SET @sql = '
WITH OrderedSet AS
(
SELECT Ks.Id,c.Name,c.CId,Ks.RegisterDate,ROW_NUMBER()
OVER (ORDER BY ' + @sort + ' '+@ts+') AS ''Index''
FROM Ks LEFT OUTER JOIN Car c On c.CId=Ks.CId WHERE
AND (Ks.RegisterDate >'''+@value2+''' OR '''+@value2+''' IS NULL)
AND (Ks.RegisterDate <'''+@value3+''' OR '''+@value3+''' IS NULL)
AND (Ks.RegisterDate ='''+@value1+''' OR '''+@value1+''' IS NULL)
AND ('+@field0+' LIKE ''%'+@value0+'%'' OR @value0 IS NULL)
)
SELECT * FROM OrderedSet WHERE [Index] BETWEEN ' +
CONVERT(NVARCHAR(12), @offset) + ' AND ' + CONVERT(NVARCHAR(12), (@offset + @newsize))
EXECUTE (@sql)
SET @totalrow = (SELECT COUNT(*) FROM [dbo].[Ks])
print @sql