一个分页存储过程代码

时间:2024-03-06 03:40:52 作者:维拉婚纱坊 综合材料 收藏本文 下载本文

【导语】“维拉婚纱坊”通过精心收集,向本站投稿了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

mysql使用存储过程制造测试数据

Sybase数据库中存储过程的建立和使用

存储过程和触发器的取舍问题(优缺点分析)

关于shell脚本编写代码格式的一个细节

DataGrid分页使用小结

成长是一个蜕变的过程

清华大学有哪些专业和专业代码

理解是一个慢慢的过程作文600字作文

人生是一个不断放弃的过程经典句子

SQL MSSQL 常用代码数据库教程

一个分页存储过程代码(共10篇)

欢迎下载DOC格式的一个分页存储过程代码,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档