【导语】“维拉婚纱坊”通过精心收集,向本站投稿了10篇一个分页存储过程代码,今天小编就给大家整理后的一个分页存储过程代码,希望对大家的工作和学习有所帮助,欢迎阅读!
- 目录
篇1:一个分页存储过程代码
2010-12-12一个常用的报表统计SQL语句
2014-04-04SQL Server 2005 数据库转 SQL Server 2000的方法小结
2007-03-03搜索sql语句
2007-03-03海量数据库的查询优化及分页算法方案
2013-09-09一个删选数据的例子,使用GROUP、DISTINCT实例解析
2008-10-10在 SQLSERVER 中快速有条件删除海量数据
2010-08-08ADO.NET EF中的实体修改方法
2013-11-11sql server获得新记录标识列值的二种方法
2013-06-06浅析被遗忘的SQLServer比较运算符修饰词
2012-06-06ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER排序函
篇2:一个分页存储过程代码
最近更 新
SQL 判断给定日期值(或时间段)所在星期的
Sql function 多行中的列合并为一行一列的
SQL Server中减小Log文件尺寸的方法分享
分享SQL Server删除重复行的6个方法
sql获取分组排序后数据的脚本
sqlserver数据库迁移后,孤立账号解决办法
SQLServer 数据库中如何保持数据一致性
使用xp_cmdshell注销Windows登录用户(终端
Sql Server 2000 行转列的实现(横排)
SQL里面用自定义Split()完成个性化需求
热 点 排 行
SQL Server 2008图文安装教程
SQL Server 2012 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
篇3:一个基于ROWNUMBER的通用分页存储过程代码
最近更 新
sql 语句 取数据库服务器上所有数据库的名
SQLServer 触发器 数据库进行数据备份
Sql Server查询性能优化之不可小觑的书签
linux下apache、mysql、php安装配置详细笔
SQL Server 2008 正式版安装指南 包含序列
sqlserver数据库迁移后,孤立账号解决办法
sqlserver exists,not exists的用法
用sql获取某字符串中的数字部分的语句
SQL语句练习实例之四 找出促销活动中销售
几个扩展存储过程使用方法
热 点 排 行
SQL Server 2008图文安装教程
SQL Server 2012 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
篇4:分页存储过程代码
2013-10-10sql with as用法详解
2013-01-01sqlserver中关于WINDOWS性能计数器的介绍
2013-06-06解析sql中得到刚刚插入的数据的id
2014-06-06SQL Server出现System.OutOfMemoryException异常的解决方法
2007-03-03将Session值储存于SQL Server中
2013-10-10利用SQL语句给字段加注释的方法
2013-02-02SQL Server利用bcp命令把SQL语句结果生成文本文件
2014-03-03sql时间格式化输出、Convert函数应用示例
2009-06-06三步堵死 SQL Server注入漏洞
2009-08-08一个简单的SQL 行列转换语句
篇5:分页存储过程代码
最近更 新
sqlserver性能调优经验总结
SqlServer 实用操作小技巧集合
sqlserver中求字符串中汉字的个数的sql语
sqlserver数据库移动数据库路径的脚本示例
mssql server 存储过程里,bulk insert t
SQL 多表连接查询实现语句
sql语句返回主键SCOPE_IDENTITY
如何在 SQL SERVER 中快速有条件删除海量
深入SQL Server中定长char(n)与变长varch
全文检索技术 sql server
热 点 排 行
SQL Server 2008图文安装教程
SQL Server 2012 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
篇6:一个高效的分页存储过程
一个高效的分页存储过程
最近在做一个几百万条数据的分页查询,研究了各种方案,在本机上用项目的实际数据库做测试,测试过程 is very 痛苦,不堪回首ing,现在废话不多说,直接上结果,相信这也是大多数搜索答案的人最愿意看的方式。
以下是存储过程的代码:
1 CREATE PROCEDURE [dbo].[P_GridViewPager] (
2 @recordTotal INT OUTPUT, --输出记录总数
3 @viewName VARCHAR(800), --表名
4 @fieldName VARCHAR(800) = '*', --查询字段
5 @keyName VARCHAR(200) = 'Id', --索引字段
6 @pageSize INT = 20, --每页记录数
7 @pageNo INT =1, --当前页
8 @orderString VARCHAR(200), --排序条件
9 @whereString VARCHAR(800) = '1=1' --WHERE条件
10 )
11 AS
12 BEGIN
13 DECLARE @beginRow INT
14 DECLARE @endRow INT
15 DECLARE @tempLimit VARCHAR(200)
16 DECLARE @tempCount NVARCHAR(1000)
17 DECLARE @tempMain VARCHAR(1000)
18 --declare @timediff datetime
19
20 set nocount on
21 --select @timediff=getdate() --记录时间
22
23 SET @beginRow = (@pageNo - 1) * @pageSize + 1
24 SET @endRow = @pageNo * @pageSize
25 SET @tempLimit = 'rows BETWEEN ' + CAST(@beginRow AS VARCHAR) +' AND '+CAST(@endRow AS VARCHAR)
26
27 --输出参数为总记录数
28 SET @tempCount = 'SELECT @recordTotal = COUNT(*) FROM (SELECT '+@keyName+' FROM '+@viewName+' WHERE '+@whereString+') AS my_temp'
29 EXECUTE sp_executesql @tempCount,N'@recordTotal INT OUTPUT',@recordTotal OUTPUT
30
31 --主查询返回结果集
32 SET @tempMain = 'SELECT * FROM (SELECT ROW_NUMBER() OVER (order by '+@orderString+') AS rows ,'+@fieldName+' FROM '+@viewName+' WHERE '+@whereString+') AS main_temp WHERE '+@tempLimit
33
34 --PRINT @tempMain
35 EXECUTE (@tempMain)
36 --select datediff(ms,@timediff,getdate()) as 耗时
37
38 set nocount off
39 END
40
41 GO
完工!
篇7:分页存储过程(用存储过程实现数据库的分页代码)
2007-11-11用SQL语句实现随机查询数据并不显示错误数据的方法
2013-09-09sql注入数据库修复的两种实例方法
2011-08-08SQL学习笔记五去重,给新加字段赋值的方法
2011-07-07sql 查询本年、本月、本日记录的语句,附SQL日期函数
2009-04-04找出所有非xml索引并重新整理的sql
2008-12-12SQL Server导入、导出、备份数据方法
2013-04-04PL/SQL DEVELOPER 使用的一些技巧
2013-02-02N字符在Sql Server字段类型中的重要性概述
2012-08-08SQL的Join使用图解教程
2011-07-07SQL Server SQL高级查询语句小结
篇8:分页存储过程(用存储过程实现数据库的分页代码)
最近更 新
sqlserver 数据库连接字符串中的可选项收
使用 GUID 值来作为数据库行标识讲解
sqlserver数据库危险扩展删除和恢复代码
sqlsever实现更改字段名
监控 log文件大小的存储过程
sqlserver性能调优经验总结
select * from sp_who的解决方案
sql 查询本年、本月、本日记录的语句,附S
通过SQL Server的位运算功能巧妙解决多选
解决在SQL脚本中的注释引起的奇怪问题
热 点 排 行
SQL Server 2008图文安装教程
SQL Server 2012 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
篇9:分页存储过程(用存储过程实现数据库的分页代码)数据库教程
复制代码代码如下:
--*******************************************************
--* 分页存储过程 *
--* 撒哈拉大森林 *
--* 2010-6-28 *
--*******************************************************
if exists(select * from sysobjects where type='P' and name=N'P_Paging')
drop procedure P_Paging
go
create procedure P_Paging
@SqlStr nvarchar(4000), --查询字符串
@CurrentPage int, --第N页
@PageSize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@SqlStr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@PageSize) as 总页数--,@rowcount as 总行数,@CurrentPage as 当前页
set @CurrentPage=(@CurrentPage-1)*@PageSize+1
exec sp_cursorfetch @P1,16,@CurrentPage,@PageSize
exec sp_cursorclose @P1
set nocount off
go
----创建测试表
--if exists(select * from sysobjects where type='U' and name=N'Test_Students')
-- drop table Test_Students
--go
--create table Test_Students(
-- id int IDENTITY(1,1) not null,
-- name nvarchar(100) not null
--)
--
----创建测试数据
--declare @i int
--set @i = 100000
--while @i>0
-- begin
-- insert into Test_Students values('姓名')
-- set @i = @i - 1
-- end
--
----执行存储过程
--exec P_Paging 'select * from Test_Students order by id',100,100 --执行
--
----删除测试表
--if exists(select * from sysobjects where type='U' and name=N'Test_Students')
-- drop table Test_Students
--go
篇10:一个将数据分页的存储过程数据库教程
存储过程|分页|数据
CREATE PROCEDURE sp_page
@tb varchar(50), --表名
@col varchar(50), --按该列来进行分页
@coltype int, --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
@orderby bit, --排序,0-顺序,1-倒序
@collist varchar(800),--要查询出的字段列表,*表示全部字段
@pagesize int, --每页记录数
@page int, --指定页
@condition varchar(800),--查询条件
@pages int OUTPUT --总页数
AS
/*
功能描述:对指定表中满足条件的记录按指定列进行分页查询,分页可以顺序、倒序
查询可以指定页大小、指定查询任意页、指定输出字段列表,返回总页数
作 者:pbsql
版 本:1.10
最后修改:2004-11-29
*/
DECLARE @sql nvarchar(4000),@where1 varchar(800),@where2 varchar(800)
IF @condition is null or rtrim(@condition)=''
BEGIN--没有查询条件
SET @where1=' WHERE '
SET @where2=' '
END
ELSE
BEGIN--有查询条件
SET @where1=' WHERE ('+@condition+') AND '--本来有条件再加上此条件
SET @where2=' WHERE ('+@condition+') '--原本没有条件而加上此条件
END
SET @sql='SELECT @pages=CEILING((COUNT(*)+0.0)/'+CAST(@pagesize AS varchar)+
') FROM '+@tb+@where2
EXEC sp_executesql @sql,N'@pages int OUTPUT',@pages OUTPUT--计算总页数
IF @orderby=0
SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
' FROM (SELECT\">'+@tb+@where1+@col+'>(SELECT MAX('+@col+') '+
' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
@col+' FROM '+@tb+@where2+'ORDER BY '+@col+') t) ORDER BY '+@col
ELSE
SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
' FROM '+@tb+@where1+@col+'<(SELECT MIN('+@col+') '+
' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
@col+' FROM '+@tb+@where2+'ORDER BY '+@col+' DESC) t) ORDER BY '+
@col+' DESC'
IF @page=1--第一页
SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+' FROM '+@tb+
@where2+'ORDER BY '+@col+CASE @orderby WHEN 0 THEN '' ELSE ' DESC' END
EXEC(@sql)
GO
本存储过程高效,曾用500万条数据测试(已建索引),只返回分页只需3秒,影响效率的地方是计算总页数,若不需要可以注释掉
--测试示例
declare @pages int
select identity(int,1,1) id,getdate() dt,xx=cast('' as varchar(10)) into #t
from sysobjects
update #t set dt=dateadd(day,id-200,dt),
xx='xxxx'+right('000000'+cast(id as varchar(10)),6)
exec sp_page '#t','id',0,0,'*',10,2,'',@pages output--按id顺序取第二页
exec sp_page '#t','id',0,1,'*',10,2,'',@pages output--按id倒序取第二页
exec sp_page '#t','xx',1,0,'*',10,3,'',@pages output--按xx顺序取第三页
exec sp_page '#t','xx',1,1,'*',10,3,'',@pages output--按xx倒序取第三页
exec sp_page '#t','dt',2,0,'*',10,2,'',@pages output--按dt顺序取第二页
exec sp_page '#t','dt',2,1,'*',10,2,'',@pages output--按dt倒序取第二页
select 总页数=@pages
drop table #t
一个分页存储过程代码(共10篇)




