博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
完美分页存储过程(有缺陷,无法加入条件)
阅读量:5934 次
发布时间:2019-06-19

本文共 3343 字,大约阅读时间需要 11 分钟。

使用分页存储过程      Create  PROCEDURE ListPage(      @tblName  nvarchar(200),           ----要显示的表或多个表的连接      @fldName  nvarchar(200) = '*',          ----要显示的字段列表      @pageSize int = 10,                    ----每页显示的记录个数      @page  int = 1,           ----要显示那一页的记录      @pageCount int = 1 output,          ----查询结果分页后的总页数      @Counts int = 1 output,           ----查询到的记录数      @fldSort nvarchar(100) = null,          ----排序字段列表或条件      @Sort  bit = 0,           ----排序方法,0为升序,1为降序      @strCondition nvarchar(200) = null, ----查询条件,不需where      @ID  nvarchar(50)  ----主表的主键      )      AS      SET NOCOUNT ON      Declare @sqlTmp nvarchar(1000)  ----存放动态生成的SQL语句      Declare @strTmp nvarchar(1000)  ----存放取得查询结果总数的查询语句      Declare @strID  nvarchar(1000)  ----存放取得查询开头或结尾ID的查询语句      Declare @sqlSort nvarchar(200)  ----存放临时生成的排序条件      Declare @intCounts int   ----要移动的记录数      Declare @BeginID int   ----开始的ID      Declare @EndID   int   ----结束的ID            --------首先生成排序方法---------      if @Sort=0  --升序      begin         if not(@fldSort is null)        set @sqlSort = ' Order by ' + @fldSort          else        set @sqlSort = ' Order by ' + @ID       end      else   --降序      begin       if not(@fldSort is null)        set @sqlSort = ' Order by ' + @fldSort + ' DESC'         else        set @sqlSort = ' Order by ' + @ID + ' DESC '      end                  --------生成查询语句--------      --此处@strTmp为取得查询结果数量的语句      if @strCondition is null --没有设置显示条件       begin       set @sqlTmp =  @fldName + ' From ' + @tblName       set @strTmp = 'select @Counts=Count(' + @ID + ') FROM '+@tblName       set @strID = ' From ' + @tblName       end      else       begin       set @sqlTmp = + @fldName + 'From ' + @tblName + ' where ' + @strCondition       set @strTmp = 'select @Counts=Count(' + @ID + ') FROM '+@tblName + ' where ' + @strCondition       set @strID = ' From ' + @tblName + ' where ' + @strCondition       end                         ----取得查询结果总数量-----      exec sp_executesql @strTmp,N'@Counts int out ',@Counts out            --取得分页总数      if @Counts <= @pageSize       set @pageCount = 1      else       set @pageCount = (@Counts / @pageSize) + 1                  --计算要移动的记录数      if @page = 1       set @intCounts = @pageSize      else      begin       set @intCounts = (@page-1) * @pageSize + 1      end            -----取得分页后此页的第一条记录的ID      set @strID = 'select @BeginID=' + @ID + ' ' + @strID            set @intCounts = @intCounts - @pageSize + 1      set rowcount  @intCounts      exec sp_executesql @strID,N'@BeginID int out ',@BeginID out            -----取得分页后此页的最后一条记录的ID      set @intCounts = @intCounts + @pageSize - 1      print @intCounts      set rowcount  @intCounts      exec sp_executesql @strID,N'@BeginID int out ',@EndID out                  ------恢复系统设置-----      set rowcount  0      SET NOCOUNT OFF            ------返回查询结果-----      if @strCondition is null       set @strTmp = 'select ' + @sqlTmp + ' where ' + @ID + ' between ' + str(@BeginID) + ' and ' + str(@EndID)      else       set @strTmp = 'select ' + @sqlTmp + ' where ' + @ID +' (between ' + str(@BeginID) + ' and ' + str(@EndID) + ')  and ' + @strCondition            if not(@sqlSort is null)      set @strTmp = @strTmp + @sqlSort      exec sp_executesql @strTmp            GO

转载于:https://www.cnblogs.com/pengbp/archive/2012/06/29/2569656.html

你可能感兴趣的文章
框架 Hibernate
查看>>
python-while循环
查看>>
vs2008 x64编译环境 忽略了 #ifdef WIN32
查看>>
【微信小程序】再次授权地理位置getLocation+openSetting使用
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
HDU 5030 Rabbit's String
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
windows服务 2.实时刷新App.config
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
(原創) 如何建立一个thread? (OS) (Linux) (C/C++) (C)
查看>>
<气场>读书笔记
查看>>
实现一个平行四边形
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
ZooKeeper 可视化监控 zkui
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>