码迷,mamicode.com
首页 > 其他好文 > 详细

存储过程分页语句

时间:2014-07-16 19:18:16      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   数据   art   io   

create proc [dbo].[ceb_Pagination]
@strFields nvarchar(2000),  --字段名
@strTableName nvarchar(2000), --表名
@strWhere nvarchar(4000),  --条件 无需加where
@strOrderBy nvarchar(200), --排序 必添 无需加order by
@PageSize int,    --分页大小
@CurrentPage int,   --当前页,1为起始页
@PageCount int output,  --返回总页数
@RecordCount int output  --返回记录总数
as
begin
declare @StartIndex int     --定义起始位置
set @StartIndex = (@currentPage - 1) * @PageSize + 1
declare @strSql1 nvarchar (Max) --数据查询
declare @strSql2 nvarchar (Max) --统计记录总数
declare @ParmDefinition nvarchar (Max)
set @ParmDefinition = N@tmp int output
set @strSql1 = Nselect row_number() over (order by  + @strOrderBy +  ) as RowID, 
set @strSql2 = select @tmp = count(*) 
if @strFields <> ‘‘
 set @strSql1 = @strSql1 + @strFields
else
 set @strSql1 = @strSql1 +  * 
if @strTableName <> ‘‘
begin
 set @strSql1 = @strSql1 +  from  + @strTableName
 set @strSql2 = @strSql2 +  from  + @strTableName
end
if @strWhere <> ‘‘
begin
 set @strSql1 = @strSql1 +  where  + @strWhere
 set @strSql2 = @strSql2 +  where  + @strWhere
end
exec sp_executesql @strSql2,@ParmDefinition,@tmp = @RecordCount output  --执行统计记录总数SQL语句

if @RecordCount % @PageSize = 0  --计算总页数
 set @PageCount = @RecordCount / @PageSize
else
 set @PageCount = @RecordCount / @PageSize + 1
set @strSql1 = with TempTable as (  + @strSql1 +  ) select * from TempTable where RowID between  
  + Convert(varchar(10),@StartIndex) +  and  + Convert(varchar(10),@StartIndex + @PageSize - 1)
SET @strSql1 =@strSql1 + order by RowID
exec(@strSql1)

 

存储过程分页语句,布布扣,bubuko.com

存储过程分页语句

标签:style   blog   color   数据   art   io   

原文地址:http://www.cnblogs.com/dashi/p/3844675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!