数据库存储过程分页显示

一七九iKsI

一七九iKsI

2016-02-19 12:08

今天图老师小编要向大家分享个数据库存储过程分页显示教程,过程简单易学,相信聪明的你一定能轻松get!
注:需要建立索引
代码如下:

/*
经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
exec GetRecordFromPage news,newsid,10,100000
news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。
*/

/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 - 升序, 1 - 降序
@strWhere 查询条件 (注意: 不要加 where)
作  者: 铁拳
邮  箱: unjianhua_kki@sina.com"sunjianhua_kki@sina.com
创建时间: 2004-07-04
修改时间: 2004-07-04
*/
Create PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型

if @OrderType != 0
begin
set @strTmp = "(select min"
set @strOrder = " order by [" + @fldName +"] desc"
end
else
begin
set @strTmp = "(select max"
set @strOrder = " order by [" + @fldName +"] asc"
end

set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
+ @strOrder

if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
+ @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

if @PageIndex = 1
begin
set @strTmp = ""
if @strWhere != ''
set @strTmp = " where (" + @strWhere + ")"

set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "]" + @strTmp + " " + @strOrder
end

exec (@strSQL)

GO

展开更多 50%)
分享

猜你喜欢

数据库存储过程分页显示

编程语言 网络编程
数据库存储过程分页显示

数据库分页存储过程代码

编程语言 网络编程
数据库分页存储过程代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle数据库存储过程的6个问题

编程语言 网络编程
Oracle数据库存储过程的6个问题

sqlserver 复制表 复制数据库存储过程的方法

编程语言 网络编程
sqlserver 复制表 复制数据库存储过程的方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL数据库存储引擎详解

编程语言 网络编程
MySQL数据库存储引擎详解

asp 用存储过程实现数据分页

ASP
asp 用存储过程实现数据分页

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

windows7字体被我该了怎么还原为默认字体

windows7字体被我该了怎么还原为默认字体

精妙的SQL语句

精妙的SQL语句
下拉加载更多内容 ↓