当前位置:  数据库>sqlserver

2分法分页存储过程脚本实例

    来源: 互联网  发布时间:2014-10-12

    本文导语:  需要说明的是:这个存储过程参数比较多,我再实际使用中又在外面单独写了一个类,页面调用直接调用封装的类,方法有很多,主要是思路,大家可以参考下。 代码修改集中在类似 代码如下:if @Sort=0set @strTmp = @strTmp + '(select ...

需要说明的是:这个存储过程参数比较多,我再实际使用中又在外面单独写了一个类,页面调用直接调用封装的类,方法有很多,主要是思路,大家可以参考下。

代码修改集中在类似

代码如下:

if @Sort=0
set @strTmp = @strTmp + '(select max('

另外94行主要是配合我自己写的类,显示记录条数分页数等信息,如果不需要就去掉。

代码如下:

  1ALTER PROCEDURE [dbo].[proc_ListPage]
  2(
  3 @tblName     nvarchar(200),        ----要显示的表或多个表的连接
  4 @fldName     nvarchar(500) = '*',    ----要显示的字段列表
  5 @pageSize    int = 10,        ----每页显示的记录个数
  6 @page        int = 1,        ----要显示那一页的记录
  7 @fldSort    nvarchar(200) = null,    ----排序字段列表或条件
  8 @Sort        bit = 0,        ----排序方法,0为升序,1为降序(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ')
  9 @strCondition    nvarchar(1000) = null,    ----查询条件,不需where
 10 @ID        nvarchar(150),        ----主表的主键
 11 @Dist      bit = 0,           ----是否添加查询字段的 DISTINCT 默认0不添加/1添加
 12 @pageCount    int = 1 output,            ----查询结果分页后的总页数
 13 @Counts    int = 1 output                ----查询到的记录数
 14 )
 15 AS
 16 SET NOCOUNT ON
 17 Declare @sqlTmp nvarchar(1000)        ----存放动态生成的SQL语句
 18 Declare @strTmp nvarchar(1000)        ----存放取得查询结果总数的查询语句
 19 Declare @strID     nvarchar(1000)        ----存放取得查询开头或结尾ID的查询语句
 20
 21 Declare @strSortType nvarchar(10)    ----数据排序规则A
 22 Declare @strFSortType nvarchar(10)    ----数据排序规则B
 23
 24 Declare @SqlSelect nvarchar(50)         ----对含有DISTINCT的查询进行SQL构造
 25 Declare @SqlCounts nvarchar(50)          ----对含有DISTINCT的总数查询进行SQL构造
 26
 27
 28 if @Dist  = 0
 29 begin
 30     set @SqlSelect = 'select '
 31     set @SqlCounts = 'Count(0)'
 32 end
 33 else
 34 begin
 35     set @SqlSelect = 'select distinct '
 36     set @SqlCounts = 'Count(DISTINCT '+@ID+')'
 37 end
 38
 39
 40 if @Sort=0
 41 begin
 42     set @strFSortType=' ASC '
 43     set @strSortType=' DESC '
 44 end
 45 else
 46 begin
 47     set @strFSortType=' DESC '
 48     set @strSortType=' ASC '
 49 end
 50
 51
 52
 53 --------生成查询语句--------
 54 --此处@strTmp为取得查询结果数量的语句
 55 if @strCondition is null or @strCondition=''     --没有设置显示条件
 56 begin
 57     set @sqlTmp =  @fldName + ' From ' + @tblName
 58     set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName
 59     set @strID = ' From ' + @tblName
 60 end
 61 else
 62 begin
 63     set @sqlTmp = + @fldName + 'From ' + @tblName + ' where (1>0) ' + @strCondition
 64     set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName + ' where (1>0) ' + @strCondition
 65     set @strID = ' From ' + @tblName + ' where (1>0) ' + @strCondition
 66 end
 67
 68 ----取得查询结果总数量-----
 69 exec sp_executesql @strTmp,N'@Counts int out ',@Counts out
 70 declare @tmpCounts int
 71 if @Counts = 0
 72     set @tmpCounts = 1
 73 else
 74     set @tmpCounts = @Counts
 75
 76     --取得分页总数
 77     set @pageCount=(@tmpCounts+@pageSize-1)/@pageSize
 78
 79     /**//**当前页大于总页数 取最后一页**/
 80     if @page>@pageCount
 81         set @page=@pageCount
 82
 83     --/*-----数据分页2分处理-------*/
 84     declare @pageIndex int --总数/页大小
 85     declare @lastcount int --总数%页大小
 86
 87     set @pageIndex = @tmpCounts/@pageSize
 88     set @lastcount = @tmpCounts%@pageSize
 89     if @lastcount > 0
 90         set @pageIndex = @pageIndex + 1
 91     else
 92         set @lastcount = @pagesize
 93
 94 --为配合显示
 95 set nocount off
 96 select @page curpage,@pageSize pagesize,@pageCount countpage,@tmpCounts [Rowcount]
 97 set nocount on
 98
 99  --//***显示分页
100     if @strCondition is null or @strCondition=''     --没有设置显示条件
101     begin
102         if @pageIndex

    
 
 

您可能感兴趣的文章:

  • 求教:shell 脚本怎么获取ORACLE存储过程的返回值?
  • Linux下用SHELL脚本执行带输入输出参数的ORACLE存储过程并得到结果
  • 想写个shell脚本调用mysql的存储过程,怎么改都执行不了。。。
  • 又拍云存储同步脚本
  • sql server生成表数据(insert脚本)的存储教程
  • mysql 存储过程实例和基本语法
  • oracle的存储过程实例讲解
  • oracle分页存储过程 oracle存储过程实例
  • MySQL 有输入输出参数的存储过程实例
  • mysql存储过程实例
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • sqlserver 存储过程中If Else的用法实例
  • mysql存储过程中使用游标的实例
  • 实例学习mssql存储过程分析
  • php curl存储cookie实例
  • Oracle存储过程返回游标实例详解
  • C 创建链表并将信息存储在二进制文件中读取的实例代码
  • Oracle存储过程之数据库中获取数据实例
  • .net二进制形式存储文件与图片的实例代码
  • SQL Server存储过程生成insert语句实例
  • java调用Oracle存储过程的方法实例
  • sql server 高效分页存储过程实例
  • mssql存储过程破解sa密码实例代码
  • SqlServer获取存储过程返回值的实例
  • MySQL存储过程使用实例详解
  • PHP用mysql数据库存储session实例解析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
  • java调用sql server存储过程,如何取存储过程返回码(不是结果集)
  • MYSQL存储过程里代返回值的存储过程怎么写
  • 用proceduredataset孔件来调用存储过程时,要用到其属性procedure.我自己写好的存储过程如何放在里面?
  • 请问各位大侠怎样在java中调用存储过程和接受存储过程的返回参数
  • 分享:在存储过程中使用另一个存储过程返回的查询结果集的方法
  • 分页存储过程(用存储过程实现数据库的分页代码)
  • Mysql存储过程学习笔记--建立简单的存储过程
  • sqlserver 批量删除存储过程和批量修改存储过程的语句
  • oracle 在一个存储过程中调用另一个返回游标的存储过程
  • 使用Statement.java里的execute执行存储过程问题
  • 请问JDBC中返回结果参数的存储过程{?=call 过程名(?,?,...)}返回的结果如何得到?
  • Mysql存储过程和函数区别介绍
  • Oracle存储过程调试简述
  • 各位你们用 JAVA 做MRP软件用"存储过程"吗 ?
  • 急求 unix 与linux在文件存储上 和数据存储上有哪些不同 希望各路英雄帮忙 iis7站长之家
  • 请问jsp怎么调用后台的存储过程?
  • jdbc里可以用存储过程和事务吗?
  • c#(asp.net)接收存储过程返回值的方法
  • 请问怎样在informix中建立存储过程并在esql/c中调用?
  • java将类序列化并存储到mysql(使用hibernate)
  • 用C或C++编程,模拟可变分区存储管理且首次适应的算法实现存储器的分配与回收
  • 服务器存储快照和数据库快照详解
  • 数据库存储, 改用TXT文件存储
  • Docker容器与企业存储的结合思考
  • 这句话什么意思:“分页存储管理是一个单一的线性地址空间,分段存储管理的作业地址空间是二维的。”?
  • 急求 unix 与linux在文件存储上 和数据存储上有哪些不同 希望各路英雄帮忙
  • 请教:如何选购NAS网络存储器?做视频服务器的存储用。急!!!
  • 数据库存储还是直接存储在硬盘上好?(来者有分)
  • 急!50分!我现在想要在VECTOR中直接存储结果集???但不想使用"在VECTOR中存储一个
  • 分布式存储系统 dCache DSS




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3