SqlServr分页存储过程的写法

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

 

posted @ 2016-08-29 22:02  石shi  阅读(334)  评论(0编辑  收藏  举报