SQL Server 数据库存储过程分页显示

2022-11-12 09:54:28
内容摘要
这篇文章主要为大家详细介绍了SQL Server 数据库存储过程分页显示,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记!注:需要建立索引 代码如
文章正文

这篇文章主要为大家详细介绍了SQL Server 数据库存储过程分页显示,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

注:需要建立索引

代码如下:


/* 
经测试,在14483461条记录中查询第100000页,每页10条记录按升序和降序第一次时间均为0.47秒,第二次时间均为0.43秒,测试语法如下: 
execGetRecordFromPagenews,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 
*/ 
CreatePROCEDUREGetRecordFromPage 
@tblNamevarchar(255),--表名 
@fldNamevarchar(255),--字段名 
@PageSizeint=10,--页尺寸 
@PageIndexint=1,--页码 
@OrderTypebit=0,--设置排序类型,非0值则降序 
@strWherevarchar(2000)=''--查询条件(注意:不要加where) 
AS 

declare@strSQLvarchar(6000)--主语句 
declare@strTmpvarchar(1000)--临时变量 
declare@strOrdervarchar(500)--排序类型 

if@OrderType!=0 
begin 
set@strTmp="<(selectmin" 
set@strOrder="orderby["+@fldName+"]desc" 
end 
else 
begin 
set@strTmp=">(selectmax" 
set@strOrder="orderby["+@fldName+"]asc" 
end 

set@strSQL="selecttop"+str(@PageSize)+"*from[" 
+@tblName+"]where["+@fldName+"]"+@strTmp+"([" 
+@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"[" 
+@fldName+"]from["+@tblName+"]"+@strOrder+")astblTmp)" 
+@strOrder 

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

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

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

exec(@strSQL) 

GO 

注:关于SQL Server 数据库存储过程分页显示的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!