存储过程实现分页

时间:2022-05-03 22:29:36 其他范文 收藏本文 下载本文

存储过程实现分页(共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

KMCT分页控件与存储过程分页完美结合存储过程分页篇

一个高效的分页存储过程

Windows 服务器入侵前兆检测方法技巧服务器教程

浅谈mssql access数据库 top分页方法

windows服务器防止asp木马详细教程Windows服务器操作系统

操作系统实习报告

SEO分页指南:浅谈内容分页的优点和缺点

提高性能:XP中硬盘的优化技巧Windows安全

双系统共用虚拟内存

计算机四级考试《数据库技术》基础知识

存储过程实现分页
《存储过程实现分页.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【存储过程实现分页(精选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

点击下载本文文档