мой запрос такой, но он ничего не возвращает @ 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 Я делаю что-то неправильно?pagination query ничего не возвращает
@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 + ' '[email protected]+') AS ''Index''
FROM Ks LEFT OUTER JOIN Car c On c.CId=Ks.CId WHERE
AND (Ks.RegisterDate >'''[email protected]+''' OR '''[email protected]+''' IS NULL)
AND (Ks.RegisterDate <'''[email protected]+''' OR '''[email protected]+''' IS NULL)
AND (Ks.RegisterDate ='''[email protected]+''' OR '''[email protected]+''' IS NULL)
AND ('[email protected]+' LIKE ''%'[email protected]+'%'' 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
но в этом случае @ value1 и @ значение2 не равно нулю, в то же время, он получит только одно условие не оба – sakir
так просто измените логику, чтобы добавить условие «AND» (или «OR») между ними и добавить условия, что-то вроде «... DECLARE @Ks_RegisterDate_Condition NVARCHAR (1000); set @Ks_RegisterDate_Condition = '' ... 'then, if становится' SET @Ks_RegisterDate_Condition = случай, когда @Ks_RegisterDate_Condition <> '', затем N 'и' else '' end + N '(Ks.RegisterDate>' '' + @ value2 + '' '' ' –
Я предполагаю, что u должен добавить + знак too.SET @Ks_RegisterDate_Condition = + – sakir