自己改造过后的AspNetPager分页控件的存储过程

--程序说明:用于AspNetPager分页控件的存储过程
--生成日期:Areas_GetPagedList过程生成于:[2009年4月28日]
--程序制作:JewLeo制作
ALTER PROCEDURE Areas_GetPagedList
(
@pagesize int,--页面大小
@pageindex int,--当前页码
@docount bit,--是否取得记录总数
@order varchar(100),--排序字段
@rank varchar(100),--排序值
@where varchar(200) --where子句串
)
AS
SET NOCOUNT ON

--@组合WHERE子句
DECLARE @whereStr Varchar(4000)
IF(@where<>'')
BEGIN
   SET @where='WHERE '+ @where
END

--@docount=1为取得总记录数,否则为取分页数据
IF(@docount=1)    --取总记录数
    BEGIN
        DECLARE @sqlStr Varchar(4000)
        SET @sqlStr='SELECT COUNT(AreasId) FROM Areas' + @where
        EXEC(@sqlStr)
    END
ELSE    --取分页的数据
    BEGIN
        CREATE TABLE #indextable(id int identity(1,1),nid int)
        DECLARE @PageLowerBound int
        DECLARE @PageUpperBound int
        DECLARE @sqlStr1 Varchar(4000)
        SET @PageLowerBound=(@pageindex-1)*@pagesize
        SET @PageUpperBound=@PageLowerBound+@pagesize
        SET ROWCOUNT @PageUpperBound
        SET @sqlStr1='INSERT INTO #indextable(nid) SELECT AreasId FROM Areas ' + @where  + ' ORDER BY ' + @order + ' ' + @rank
        EXEC(@sqlStr1)
        --要返回的查询记录值
        SELECT * FROM Areas,#indextable t WHERE AreasId=t.nid
            AND t.id>@PageLowerBound AND t.id<=@PageUpperBound ORDER BY t.id
    END
SET NOCOUNT OFF

posted @ 2009-04-29 11:22  网络渔夫  阅读(490)  评论(2编辑  收藏  举报