SQL Sever分页存储过程:
-------------------------- 实现分页查询的存储过程 --------------------------- CREATE PROCEDURE paggingResultProc ---- 获得某一页的数据 ---- -- 当前页页码 (即Top currPage) @currPage int = 1, -- 需要得到的字段 (即 column1,column2,......) @showColumn varchar(2000) = '*', -- 需要查看的表名 (即 from table_name) @tabName varchar(2000), -- 查询条件 (即 where condition......) 不用加where关键字 @strCondition varchar(2000) = '', 排序的字段名 (即 order by column asc/desc) @ascColumn varchar(100) = '', -- 排序的类型 (0为升序,1为降序) @bitOrderType bit = 0, -- 主键名称 @pkColumn varchar(50) = '', --分页大小 @pageSize int = 20 AS BEGIN -- 存储过程开始 --该存储过程需要用到的几个变量-- -- 该存储过程最后执行的语句 DECLARE @strTemp varchar(1000) DECLARE @strSql varchar(4000) -- 排序类型语句 (order by column asc或者order by column desc) DECLARE @strOrderType varchar(1000) BEGIN -- bitOrderType=1即执行降序 IF @bitOrderType = 1 BEGIN SET @strOrderType = ' ORDER BY '+@ascColumn+' DESC' SET @strTemp = '<(SELECT min' END ELSE BEGIN SET @strOrderType = ' ORDER BY '+@ascColumn+' ASC' SET @strTemp = '>(SELECT max' END IF @currPage = 1 -- 如果是第一页 BEGIN IF @strCondition != '' SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn +' FROM '+@tabName+' WHERE '+@strCondition+@strOrderType ELSE SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+ @showColumn+' FROM '+@tabName+@strOrderType END ELSE -- 其他页 BEGIN IF @strCondition !='' SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+ ' FROM '+@tabName+' WHERE '+@strCondition+' AND '+ @pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+' '+@pkColumn+' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderType ELSE SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn +' FROM '+@tabName+' WHERE '+@pkColumn+@strTemp+'('+@pkColumn+')' +' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+' '+@pkColumn+ ' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderType END END EXEC (@strSql) END -- 存储过程结束
--------------------------- 查询表的记录数存储过程 ------------------------------ CREATE PROC rowsCountProc @tabName varchar(200), --需要查询的表名 @colName varchar(200)='*', --需要查询的列名 @condition varchar(200)='' --查询条件 AS BEGIN DECLARE @strSql varchar(255) IF @condition = '' SET @strSql='select count('+@colName+') from '+@tabName ELSE SET @strSql='select count('+@colName+') from '+@tabName +' where '+@condition EXEC (@strSql) END