分页查询 效率最高
程序员文章站
2023-10-20 23:26:35
复制代码 代码如下:/* 日期:2009-03-19 功能:根据各种条件获取 游戏国家任务 列表数据 */ create procedure [dbo].[prgs_nat...
复制代码 代码如下:
/*
日期: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
上一篇: PHP内置函数生成随机数实例
下一篇: PHP微信支付结果通知与回调策略分析