复制代码 代码如下:
/*
日期: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