sql分页存储过程
阅览次数: 今天:4 总浏览:536
文章来源: CP整理
原文作者:
整理日期: 2008-05-10
发表评论
字体大小: 小
中
大
/*分页存储过程
Descript:分页存储过程
*/
CREATE PROCEDURE database_PageList(
@tblName nvarchar(200), ----要显示的表或多个表的连接
@fldName nvarchar(200) = '*', ----要显示的字段列表
@pageSize int, ----每页显示的记录个数
@page int, ----要显示那一页的记录
@pageCount int = 1 output, ----查询结果分页后的总页数
@Counts int = 1 output, ----查询到的记录数
@fldSort nvarchar(100) = null, ----排序字段列表或条件
@Sort bit, ----排序方法,0为升序,1为降序
@strCondition nvarchar(200), ----查询条件,不需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 @sqlTmp = + @fldName + 'From ' + @tblName */
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 */
set @strTmp = 'select ' + @sqlTmp + ' and ' + @ID +' between ' + str(@BeginID) + ' and ' + str(@EndID)
/* set @strTmp = 'select ' + @sqlTmp + ' and (' + @ID +' between ' + str(@BeginID) + ' and ' + str(@EndID) + ') and ' + @strCondition */
/* set @strTmp = 'select * from tbproduct where (xid between 1 and 2) and xvisible = 1' */
if not(@sqlSort is null)
set @strTmp = @strTmp + @sqlSort
exec sp_executesql @strTmp
GO
分享到:
相关推荐
"sql分页存储过程"是指利用存储过程实现数据查询时的分页功能,这在大数据量的查询中尤为重要,因为直接一次性返回所有结果可能会消耗大量系统资源并导致响应时间过长。 分页查询是数据库中常用的一种技术,它允许...
根据提供的文件信息,本文将详细解释一种通用的SQL分页存储过程实现方法,该方法能够适应不同的表结构、字段数量,并支持自定义排序字段与筛选条件。 ### SQL 分页存储过程解析 #### 标题说明 标题“sql分页存储...
本文将详细介绍三个高效且参数最少的SQL分页存储过程,帮助你优化数据库性能,提升查询速度。 1. **基于ROW_NUMBER()函数的分页存储过程** ROW_NUMBER()是SQL Server中的一个窗口函数,它为每一行提供一个唯一的...
通用sql分页存储过程,提供12参数可供选择。其中,提供两种分页方案被选择和相关排序方式,支持自定义查询、自定义排序等
### 速度最快SQL分页存储过程详解 #### 概述 在数据库操作中,分页查询是一种非常常见的需求。为了提高查询效率并优化用户体验,设计一个高效、灵活且易于使用的分页存储过程变得尤为重要。本文将详细介绍一个被...
本资源"经过优化测试的SQL分页存储过程.rar"提供了一种经过性能测试的SQL分页解决方案,其核心在于存储过程。 存储过程是预编译的SQL语句集合,它们被存储在数据库中,可以由应用程序调用执行。这带来了诸多好处,...
### 几款通用的SQL分页存储过程:深入解析与应用 在数据库操作中,分页查询是一项常见的需求,尤其当数据量庞大时,合理的分页可以极大地提高查询效率和用户体验。本文将深入分析两款通用的SQL分页存储过程,分别...
一个通用的sql分页存储过程源代码 数据比较大时此分页存储过程效率相当高
SQL分页存储过程是在数据库管理中用于实现高效数据分页查询的重要工具。在Web应用中,当需要展示大量数据时,分页功能不可或缺,因为它允许用户逐步加载和浏览数据,而不是一次性加载所有记录,从而提高用户体验并...
比较通用的sql分页存储过程存储过程 比较通用的sql分页存储过程存储过程
【资源介绍】:SQL分页存储过程 【备注】: 亲爱的下载用户: 谢谢您光临CSDN阿Q资源中心! 本中心发布的资源均是经过本人测试通过后才发布的,请放心下载。如果您有不清楚的问题或者建议,请您通过...
完整SQL分页存储过程通过此过程脚本呢实现任何数据库的分页数据显示技术
以下是一个简单的C#结合SQL Server的分页存储过程的例子: 1. 创建存储过程: 在SQL Server Management Studio中,编写如下的存储过程,这个过程接收两个参数:@PageIndex表示当前页号,@PageSize表示每页显示的...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
在标题"asp.net分页vb.net源码(sql分页存储过程)"中,提到的关键知识点包括: 1. **ASP.NET分页**:ASP.NET提供了多种实现分页的方法,如服务器控件(如GridView, DataList等)内置的分页功能,或者自定义分页。...
本文将基于给定文件中的信息,深入探讨SQL分页存储过程的实现原理、优势及其实现方法,同时也会涉及一些高级数据库编程技巧,如动态SQL、触发器、函数和委托等。 ### 分页存储过程的重要性 当数据库中存储的数据量...