会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
[*] Hello Snoopy
.NET and Flash Blog
博客园
首页
新随笔
联系
订阅
管理
公告
用首尾ID法写分页存储过程
CREATE
PROC
GetList
(
@iCurPage
INT
,
@iPageSize
INT
)
AS
--
定义局部变量
DECLARE
@iBeginID
INT
,
@iEndID
INT
,
@iRootRecordCount
INT
,
@iPageCount
INT
,
@iRowCount
INT
SET
NOCOUNT
ON
--
求总共根贴数
SELECT
@iRootRecordCount
=
COUNT
(
*
)
FROM
Products
--
判断页数是否正确
--
IF (@iCurPage - 1) * @iPageSize > @iRootRecordCount
--
RETURN -1
--
求开始rootID
SET
@iRowCount
=
(@iCurPage
-
1
)
*
@iPageSize
+
1
SET
ROWCOUNT
@iRowCount
SELECT
@iBeginID
=
ProductID
FROM
Products
ORDER
BY
ProductID
DESC
--
结束rootID
SET
@iRowCount
=
@iCurPage
*
@iPageSize
SET
ROWCOUNT
@iRowCount
SELECT
@iEndID
=
ProductID
FROM
Products
ORDER
BY
ProductID
DESC
--
恢复系统变量
SET
ROWCOUNT
0
SET
NOCOUNT
OFF
--
SELECT @iBeginID AS beginID,@iEndID AS endID
SELECT
*
FROM
Products
WHERE
ProductID
BETWEEN
@iEndID
AND
@iBeginID
ORDER
BY
ProductID
DESC
RETURN
(@@rowcount)
GO
--
调用
USE
Northwind
DECLARE
@iCurPage
INT
,@iPageSize
INT
SET
@iCurPage
=
1
SET
@iPageSize
=
10
exec
GetList
1
,
10
posted on
2004-07-23 11:17
HelloSnoopy
阅读(
445
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部