数据库存储过程分页显示_mssql数据库教程-查字典教程网
数据库存储过程分页显示
数据库存储过程分页显示
发布时间:2016-12-29 来源:查字典编辑
摘要:注:需要建立索引复制代码代码如下:/*经测试,在14483461条记录中查询第100000页,每页10条记录按升序和降序第一次时间均为0.4...

注:需要建立索引

复制代码 代码如下:

/*

经测试,在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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新mssql数据库学习
    热门mssql数据库学习
    编程开发子分类