用存储过程实现数据分页

参考:http://blog.csdn.net/wellknow/archive/2004/07/29/55167.aspx

用的是NOT IN 的方法


/**************************
 * 创建人        :Even
 * 创建时间        :2005-12-13
 * 最近修改时间    :
 * 功能描述        :
 *
 * 用存储过程实现数据分页
 *
 * @Table : 表名, 可以是一张表,也可以是一个SQL语句
 * @PageSize : 页码大小
 * @CurrentPageIndex : 当前页面, CurrentPageIndex=1 表示第一页
 * @KeyField : 关键字段域
 * @Sort : 排序字段
 * ***********************
*/


--------------------------------------------------
-- DataPager
--------------------------------------------------

ALTER PROCEDURE dbo.DataPager
(
    @Table nvarchar(
2048),
    @PageSize 
int,
    @CurrentPageIndex 
int,
    @KeyField VARCHAR(
255),
    @Sort VARCHAR(
255)

)
AS

declare @SqlStr 
as nvarchar(4000)

set @SqlStr = 'select top ' + cast(@CurrentPageIndex * @PageSize as varchar(20)) + ' * from ' + @Table + ' t'
set @SqlStr = @SqlStr + ' where t.' + @KeyField + ' NOT IN'
set @SqlStr = @SqlStr + ' (select TOP ' + cast((@CurrentPageIndex-1)*@PageSize as varchar(20)) + ' ' + @KeyField + ' from '
set @SqlStr = @SqlStr + ' ' + @Table + ' ' + @Sort + '' + @Sort

--print @SqlStr

execute sp_executeSql @SqlStr
posted @ 2005-12-13 11:46  See Me Fly  阅读(640)  评论(1编辑  收藏  举报