У меня есть хранимая процедура, как это:Очевидно, что хранимая процедура SQL?
IF @Active=0
select @rowCount=(select count(1) from [table] WHERE (GETDATE() BETWEEN StartTime AND EndTime) AND [email protected]
IF @Active=1
select @rowCount=(select count(1) from [table] WHERE NOT(GETDATE() BETWEEN StartTime AND EndTime) AND [email protected]
Есть ли способ, чтобы сделать заявление более ясно?
Я делаю пагинация так:
Параметры:
@pageNum AS BIGINT,
@pageSize AS BIGINT,
@Active AS INT,
@RowCount AS INT OUTPUT
И отдых:
IF @Active=0
BEGIN
WITH K AS
( - SELECT [Id]
FROM [table]
WHERE not(GETDATE() BETWEEN StartTime AND EndTime) AND [email protected] ORDER BY [Id]
OFFSET (@pagenum - 1) * @pagesize ROWS FETCH NEXT @pagesize ROWS ONLY
)
SELECT T.[Id],T.[Name]
FROM [table]
AS T
INNER JOIN K
ON T.Id = K.Id
ORDER BY T.Id;
select @rowCount=(select count(1) from [table] WHERE not(GETDATE() BETWEEN StartTime AND EndTime) AND [email protected]
END
IF @Active=1
BEGIN
WITH K AS
(
SELECT [Id]
FROM [table]
WHERE (GETDATE() BETWEEN StartTime AND EndTime) AND [email protected]
ORDER BY [Id]
OFFSET (@pagenum - 1) * @pagesize ROWS FETCH NEXT @pagesize ROWS ONLY
)
SELECT T.[Id],T.[Name]
FROM [table]
AS F
INNER JOIN K
ON T.Id = K.Id
ORDER BY T.Id;
select @rowCount=(select count(1) from [table] WHERE (GETDATE() BETWEEN StartTime AND EndTime) AND [email protected] END
и хранимая процедура выглядит очень долго ..... так Мне интересно, есть ли лучший способ сделать это лучше
два возможных отсчетов исчерпывающих - т.е. это означало быть, что, если вы звоните в этот раз с '@ Active' установлен в 0 и снова с ним установлен в 1, и вместе они объединяют результаты, если сумма этих двух результатов будет такой же, как 'select COUNT (*) из [table]'? Потому что на данный момент это не так. –