[*] Hello Snoopy

.NET and Flash Blog
用服务器光标分页
CREATE PROC GetList2
(
      @iCurPage 
INT,
      @iPageSize 
INT
)
AS
-- local vars
DECLARE @total INT
DECLARE @start INT
DECLARE @end INT
DECLARE @maxid INT
DECLARE @minid INT

--SET @iPageSize = 10
--
SET @iCurPage = 1

SET @start = (@iCurPage-1* @iPageSize + 1
SET @end   = @start + @iPageSize - 1

DECLARE pagecursor CURSOR SCROLL FOR 
SELECT ProductID FROM Products ORDER BY ProductID DESC

OPEN pagecursor
SET @total = @@CURSOR_ROWS

FETCH ABSOLUTE @start FROM pagecursor INTO @minid
    
IF @end > @total
        
FETCH LAST FROM pagecursor INTO @maxid
    
ELSE
FETCH ABSOLUTE @end FROM pagecursor INTO @maxid
CLOSE pagecursor 
DEALLOCATE pagecursor

SELECT *
FROM Products 
    
WHERE ProductID BETWEEN @maxid AND @minid 
    
ORDER BY ProductID DESC

--使用方法
USE NorthWind
EXEC GetList2 1,10

posted on 2004-07-23 12:07  HelloSnoopy  阅读(432)  评论(0编辑  收藏  举报