复制代码 代码如下:
/* 
日期: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 
                            
                            
                                您可能感兴趣的文章:- Mysql中分页查询的两个解决方法比较
 - 高效的SQLSERVER分页查询(推荐)
 - 真正高效的SQLSERVER分页查询(多种方案)
 - oracle,mysql,SqlServer三种数据库的分页查询的实例
 - 三种SQL分页查询的存储过程代码
 - php下巧用select语句实现mysql分页查询
 - 防SQL注入 生成参数化的通用分页查询语句
 - SQL Server 分页查询存储过程代码
 - 数据库分页查询方法
 - Access 模糊参数 分页查询
 - Ajax案例集下载:新增分页查询案例(包括《Ajax开发精要》中的两个综合案例) 下载
 - 高效的jsp分页查询
 - PHP 分页原理分析,大家可以看看
 - php 分页原理详解
 - 默默小谈PHPMYSQL分页原理及实现
 - mysql分页原理和高效率的mysql分页查询语句