您的位置:首页 > 数据库

SQL分页存储过程(不支持多表联合查询,不支持多字段排序)

2013-09-05 17:09 405 查看
CREATE PROCEDURE [dbo].[Pro_GetPageOfRecords]
@PageSize   INT=20,            --分页大小
@CurrentPage INT,              --第几页
@Clumns  VARCHAR(1000)='*',    --需要得到的字段
@TableName VARCHAR(100),       --需要查询的表
@Condition VARCHAR(1000)='',   --查询条件,不用加Where关键字
@AscColumn VARCHAR(100)='',    --排序的字段名(即order by column asc/desc)
@BitOrderType BIT=0,           --排序类型(0为升序,1为降序)
@PkColumn VARCHAR(50)='',      --主键名称,不可为空
@TotalCount INT OUTPUT ,       --记返回总记录
@TotalPageCount INT OUTPUT     --返回总页数
AS
BEGIN
DECLARE @strSql VARCHAR(5000)           --分页语句
DECLARE @strOrderType VARCHAR(1000)     --排序类型语句
DECLARE @SqlCount NVARCHAR(4000)   	    --记录数语句
DECLARE @new_where VARCHAR(1000)        --查询条件
----Where条件处理-------------
IF @Condition!=''
BEGIN
SET @new_where = ' Where ' + @Condition
END
ELSE
BEGIN
SET @new_where = ' Where 1=1'
END
----------总记录数查询---------------
SET @SqlCount = 'Select @TotalCount=COUNT(*),@TotalPageCount=CEILING((COUNT(*)+0.0)/'
+STR(@PageSize)+') FROM (Select * FROM ' + @TableName + @new_where+') AS T'
BEGIN
EXEC SP_EXECUTESQL @SqlCount,N'@TotalCount INT OUTPUT,@TotalPageCount INT OUTPUT',
@TotalCount OUTPUT,@TotalPageCount OUTPUT
END
--------------排序处理------------
IF	@BitOrderType=1   --降序
BEGIN
IF	@AscColumn!=''
SET @strOrderType=' ORDER BY '+@AscColumn+' DESC'
ELSE
SET @strOrderType=' ORDER BY '+@PkColumn+' DESC'
END
ELSE
BEGIN
IF	@AscColumn!=''
SET @strOrderType=' ORDER BY '+@AscColumn+' ASC'
ELSE
SET @strOrderType=' ORDER BY '+@PkColumn+' ASC'
END
-----------------分页处理--------------------
IF @CurrentPage=1     --第一页
BEGIN
SET @strSql='SELECT TOP '+STR(@PageSize)+''+@Clumns+' FROM'+ @TableName + @new_where+@strOrderType
END
ELSE               --其他页
BEGIN
set @strsql = 'SELECT TOP '+STR(@PageSize)+' '+@Clumns+' FROM '+ @TableName + @new_where+' AND ('+@PkColumn+' NOT IN (SELECT TOP '+STR((@PageSize-1)*@PageSize)+' '+@PkColumn+' FROM '+@TableName+''+@Condition+@strOrderType+'))'+@strOrderType
END

EXEC (@strSql)
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐