/*

功能:简单的实现数据分页

*/

ALTER PROC [dbo].[SB_FastPaging]
(
 @vc_Table varchar(50),--表名
 @vc_SqlWhere varchar(1000)='',--条件
 @vc_SqlOrder varchar(1000)='',--排序规则
 @vc_SqlFile varchar(1000)='*',--选取字段
 @i_PageSize int=1,--分页大小
 @i_PageIndex int=1,--页面索引
 @bt_Count bit
)
as
DECLARE @vc_Sql VARCHAR(5000)
IF(@bt_Count=1)
BEGIN
 SET @vc_Sql='SELECT COUNT(*) FROM '+@vc_Table+' '+@vc_SqlWhere
END
ELSE
BEGIN
 SET @vc_Sql='WITH temptbl AS ('+CHAR(13)
 SET @vc_Sql=@vc_Sql+'SELECT ROW_NUMBER() OVER ('+@vc_SqlOrder+')AS Row, '+@vc_SqlFile+' FROM '+@vc_Table+' '+@vc_SqlWhere+')'+CHAR(13)
 SET @vc_Sql=@vc_Sql+'SELECT * FROM temptbl WHERE Row BETWEEN '+CAST((@i_PageIndex-1)*@i_PageSize+1 AS VARCHAR(8))+' AND '+CAST((@i_PageIndex-1)*@i_PageSize+@i_PageSize AS VARCHAR(8))
END

EXEC(@vc_Sql)

posted on 2009-03-06 13:33  guoshuai  阅读(165)  评论(0)    收藏  举报