分页查询 效率最高

复制代码 代码如下:

/*

日期:2009-03-19

功能:根据各种条件获取 游戏国家任务 列表数据

*/

create procedure [dbo].[prgs_nation_task_getlist]

@pagesize int = 100, — 每页显示记录条数,默认为100

@pageindex int = 1, — 当前提取要显示的页码,默认为1,数据库根据pagesize,pageindex 计算返回一页数据

@rettotal int output, — 记录总数

@retcount int output, — 返回记录数

@retpageindex int output, — 输出当前页码

@returndesc varchar(128) output — 返回操作结果描述

as

begin

set nocount on

set xact_abort on

set @rettotal = 0

set @retcount = 0

set @retpageindex = @pageindex

— 多条件取值

declare @err int — 错误

declare @pagecount int — 总页数

declare @beginrid int — 开始行 rid

declare @maxrow int — 最后行

select @rettotal = count(*)

from nationtask

select @err = @@error

if @err <> 0

begin

set @returndesc = ‘提取国家任务总数失败!’

return -1

end

— 如果无数据, 则返回空结果集

if @rettotal = 0

begin

set @returndesc = ‘当前条件无国家任务记录!’

return 1

end

— 计算总页数

set @pagecount = @rettotal / @pagesize

if @rettotal % @pagesize > 0

begin

set @pagecount = @pagecount + 1

end

— 超过总页数,则返回空结果集

if @pageindex > @pagecount

begin

set @returndesc = ‘当前条件无国家任务记录!’

return 1

end

— 获取 要返回页面的 第一行纪录的 rid

set @maxrow = @pagesize * (@pageindex – 1) + 1

set rowcount @maxrow

select @beginrid = rid

from nationtask

order by rid desc

— 返回数据列表

set rowcount @pagesize

select rid

,taskname

,tasktitle

,imageid

,effectid

,starttime

from nationtask

where rid <= @beginrid

order by rid desc

set @retcount = @@rowcount

— 结束

set @returndesc = ‘提取国家任务列表成功!’

return 1

end

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐