惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Jina AI
Jina AI
The Cloudflare Blog
V
Visual Studio Blog
博客园_首页
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园 - Franky

博客园 - ssihc

MySql 编码设置 一键设置JDK环境变量 一键java_home&tomcat_home MyEclipse 优化 - ssihc - 博客园 ECShop flash 相册 - ssihc shell SqliteHelper - ssihc - 博客园 C# SQLite - ssihc - 博客园 将资源文件中的数据写回磁盘 获取下级用户列表 备份数据库 获取SQL Server数据库元数据的方法 通用分页存储过程4 通用分页存储过程2 通用分页存储过程1 列转字符串 获取整串汉字字符的所有首字母 选择不是最小的所有记录 实现split功能 的函数
通用分页存储过程3
ssihc · 2009-02-16 · via 博客园 - ssihc

 CREATE PROCEDURE [dbo].[up_Page2005V2_Join]
     
@TableName varchar(150),        --表名
     @Fields varchar(5000= '*',    --字段名(全部字段为*)
     @OrderField varchar(5000),      --排序字段(必须!支持多字段)
     @sqlWhere varchar(5000= Null--条件语句(不用加where)
     @pageSize int,                  --每页多少条记录
     @pageIndex int = 1 ,            --指定当前为第几页
     @totalRecord int = 0,
     
@TotalPage int output           --返回总页数
 ASBEGIN
     
Begin Tran --开始事务
     Declare @sql nvarchar(4000);if @totalRecord<=0 begin--计算总记录数
         if (@SqlWhere='' or @sqlWhere=NULL)
             
set @sql = 'select @totalRecord = count(*) from ' + @TableName
         
else
             
set @sql = 'select @totalRecord = count(*) from ' + @TableName + '  where ' + @sqlWhere
         
EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数
     end--计算总页数
     select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)
     
if (@SqlWhere='' or @sqlWhere=NULL)
         
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName
     
else
         
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere--处理页数超出范围情况
     if @PageIndex<=0
         
Set @pageIndex = 1if @pageIndex>@TotalPage
         
Set @pageIndex = @TotalPage--处理开始点和结束点
     Declare @StartRecord int
     
Declare @EndRecord intset @StartRecord = (@pageIndex-1)*@PageSize + 1
     
set @EndRecord = @StartRecord + @pageSize - 1--继续合成sql语句
     set @Sql = @Sql + ') as t where rowId between ' + Convert(varchar(50),@StartRecord+ ' and ' +  Convert(varchar(50),@EndRecord)
     
print @sqlExec(@Sql)
    
---------------------------------------------------
     If @@Error <> 0
       
Begin
         
RollBack Tran
         
Return -1
       
End
      
Else
       
Begin
         
Commit Tran
         
Return @totalRecord ---返回记录总数
       End
 
END