存储过程实现分页(共9篇)由网友“卿小本”投稿提供,以下是小编帮大家整理后的存储过程实现分页,仅供参考,欢迎大家阅读。
篇1:存储过程实现分页
USE [HDIS]
GO
/****** Object: StoredProcedure [dbo].[AspNetPager] Script. Date: 12/30/ 09:00:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create procedure [dbo].[AspNetPager]
(@tablename nvarchar (1000), --表名
@filedname nvarchar (4000), --查询的字段
@startIndex int, --起始记录数
@endIndex int, --结束记录数
@where nvarchar (4000), --条件 (不包含where)
@orderfiled nvarchar (100), --排序字段 (CreateDate desc)
@PageSize int,
@prmkeyName nvarchar (100),
@pageIndex int,
@docount bit)
as
begin
declare @date varchar(50),@sql nvarchar (4000) ,@i int
select @date =CONVERT(nvarchar(50), serverproperty(‘productversion‘))
--if(CONVERT(int, SUBSTRING(@date,0,3))>8) ------sql以上
-- begin
-- if(@docount=1)
-- set @sql = ‘select count(*) from ‘ + @tablename +‘ where ‘ + @where
-- else
-- begin
-- set @sql =‘
-- with temptbl as (
-- SELECT ROW_NUMBER OVER (ORDER BY ‘+ @orderfiled +‘ )AS Row, * from ‘+ @tablename +‘ where ‘+ @where +‘)
-- SELECT ‘+ @filedname +‘ FROM temptbl where Row between ‘+CONVERT(nvarchar(100),@startIndex) +‘ and ‘+CONVERT(nvarchar(100),@endIndex )
-- END
-- exec (@sql)
-- end
--else
begin -------sql2000
if(@docount=1)
set @sql = ‘select count(*) from ‘ + @tablename +‘ where ‘ + @where
else
begin
set @i= CONVERT(nvarchar(100),@PageSize)*(CONVERT(nvarchar(100),@pageIndex)-1)
set @sql = ‘SELECT TOP ‘+ CONVERT(nvarchar(100),@PageSize) +‘ *
FROM ‘ + @tablename +‘ WHERE (‘+@where +‘ and‘+@prmkeyName+‘ NOT IN
(SELECT TOP ‘+CONVERT(nvarchar(100),@i)+‘ ‘ +@prmkeyName +‘
FROM ‘ + @tablename +‘ WHERE ‘ + @where+‘ ORDER BY ‘+ @orderfiled +‘)) ORDER BY ‘+ @orderfiled
end
--print(@sql)
exec (@sql)
end
end
篇2:分页存储过程代码
-10-10sql with as用法详解
2013-01-01sqlserver中关于WINDOWS性能计数器的介绍
2013-06-06解析sql中得到刚刚插入的数据的id
2014-06-06SQL Server出现System.OutOfMemoryException异常的解决方法
-03-03将Session值储存于SQL Server中
2013-10-10利用SQL语句给字段加注释的方法
2013-02-02SQL Server利用bcp命令把SQL语句结果生成文本文件
2014-03-03sql时间格式化输出、Convert函数应用示例
-06-06三步堵死 SQL Server注入漏洞
2009-08-08一个简单的SQL 行列转换语句
篇3:分页存储过程代码
最近更 新
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 图文安装教程
SQL Server 安装图解教程(附
sqlserver中distinct的用法(不重
SQL Server导入、导出、备份数据
SQL语句去掉重复记录,获取重复记
SQL Server数据库入门学习总结
SQL Server错误代码大全及解释(
sql convert函数使用小结
sql 时间函数 整理的比较全了
用SQL语句添加删除修改字段、一些
篇4:分页实现方法的性能比较存储过程
我们先给出几种主要的分页方法和核心语句,然后直接给出结论,有兴趣的读者可以看看后面的数据
几种常用存储过程分页方法
TopN方法
select Top(@PageSize) from TableName where ID Not IN
(Select Top ((@PageIndex-1)*@PageSize) ID from Table Name where .... order by ... )
where .... order by ...
临时表
declare @indextable table(id int identity(1,1),nid int,PostUserName nvarchar(50))
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize--下限
set @PageUpperBound=@PageLowerBound+@pagesize--上限
set rowcount @PageUpperBound
insert into @indextable(nid,PostUserName) select ReplyID,PostUserName from TableName order by ......
select * from TableName p,@indextable t where p.ID=t.nid
and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
CTE--新语法,类似临时表,但是生命周期稍微不同,这里只是他的一个运用
withcte_temp--定义零时表,PageIndex是一个计算字段,储存了搜索结果的页号
As (ceiling((Row_Number() over(order by.... )-1)/@pagesize as int) as PageIndex,* from TableName where.....)
select * fromcte_temp where pageindex=@pageindex-1;
结论:
TopN在小页数下最快,如果在10页以下,可以考虑用它,CTE和临时表时间很稳定,CTE消耗的时间比临时表多,但是不会引起tempdb的暴涨和IO增加
性能比较
试验环境:winserver,Sqlserver2005,库大小2,567,245行,没有where子句,试验时每页大小50,页码作为变量
取0,3,10,31,100,316,1000,3162...页,也就是10的指数,试验结果如下
页数TopNCTE临时表临时表老论坛存储过程CTE改进1312101014577302315779552446471911012755048838014646116325889672122360197676021004680973816642354867151316452719764323386752272551000无法计算9806869257863589483162无法计算98222485411012460821010000无法计算975478121192614250735931623无法计算97751872933218152497511100000无法计算无法计算3153855569171396124数据解释和分析
临时表分为有没有缓存两种时间,CTE就是上面的方法,CTE改进只是把选入CTE临时表的列数减少了,只选取了页号和主键,Null表示时间无法计算(时间太长),数据单位是毫秒.
从上面的数据可
关 键 字:MYSQL
篇5:一个分页存储过程代码
-12-12一个常用的报表统计SQL语句
-04-04SQL Server 2005 数据库转 SQL Server 的方法小结
-03-03搜索sql语句
2007-03-03海量数据库的查询优化及分页算法方案
-09-09一个删选数据的例子,使用GROUP、DISTINCT实例解析
-10-10在 SQLSERVER 中快速有条件删除海量数据
2010-08-08ADO.NET EF中的实体修改方法
2013-11-11sql server获得新记录标识列值的二种方法
2013-06-06浅析被遗忘的SQLServer比较运算符修饰词
-06-06ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER排序函
篇6:一个分页存储过程代码
最近更 新
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语句添加删除修改字段、一些
篇7:分页存储过程(用存储过程实现数据库的分页代码)
-11-11用SQL语句实现随机查询数据并不显示错误数据的方法
-09-09sql注入数据库修复的两种实例方法
-08-08SQL学习笔记五去重,给新加字段赋值的方法
2011-07-07sql 查询本年、本月、本日记录的语句,附SQL日期函数
-04-04找出所有非xml索引并重新整理的sql
-12-12SQL Server导入、导出、备份数据方法
2013-04-04PL/SQL DEVELOPER 使用的一些技巧
2013-02-02N字符在Sql Server字段类型中的重要性概述
-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
★ windows服务器防止asp木马详细教程Windows服务器操作系统
★ 操作系统实习报告
【存储过程实现分页(精选9篇)】相关文章:
SSH构建的银行管理系统设计与实现论文2022-12-20
计算机二级答案2022-05-04
论文:探讨IPTV系统中EPG模块框架的设计和实现2022-06-03
一份比较全的PHP笔试题2024-02-25
计算机等级考试试题及答案2022-04-29
《饭店管理知识》教案2022-11-08
百度校园招聘web前端广州站笔试题2023-02-21
windows7虚拟内存设置详解2022-05-08
Access数据处理方法论文2022-11-25
医院床位资源管理系统的设计与实现论文2023-10-01