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