SqlServr分页存储过程的写法

时间:2021-12-05 18:02:20
CREATE PROCEDURE [dbo].[GetDataByPager]
(
--从第几条数据取
@startIndex INT,
--分页的表
@tableName VARCHAR(50),
--每次取多少条
@pageSize INT=5,
--条件
@condition VARCHAR(1000)='1=1',
--通过Id进行排除
@key VARCHAR(20)='id'
)AS
BEGIN
--通过主建排除法 不需要进行排序
DECLARE @TopCount INT
--SET @TopCount=(@pageIndex-1)*@pageSize
DECLARE @SQL VARCHAR(1000)
SET @SQL='select TOP ' +CONVERT(VARCHAR(20),@pagesize)+' * FROM '+@tableName
+' WHERE '+ @condition+' and '+@key+' NOT IN(SELECT TOP ' +CONVERT(VARCHAR(20),@startIndex)+@key+' FROM '+@tableName+');'
--返回的总条数
SET @SQL =@SQL+' SELECT COUNT(*) FROM '+@TableName+' WHERE '+@condition
--PRINT(@SQL)
EXEC(@SQL)
END