declare @startindex int,@endindex int,@totalrecord int,@current_startindex int,@current_endindex int
--定义几个变量
declare cur_book_page scroll cursor for
select id from bookclass order by id desc
--定义一个滚动游标
open cur_book_page
--打开游标
set @totalrecord = @@cursor_rows
--得到总的记录数
if @totalrecord > 0
begin
if @totalrecord % @pagesize = 0
set @pagetotal = @totalrecord / @pagesize
else
set @pagetotal = @totalrecord / @pagesize + 1
--得到总页数
if @pageindex < 1
set @pageindex = 1
if @pageindex > @pagetotal
set @pageindex = @pagetotal
--检查输入参数,确保它在1到总页数之间
set @startindex = (@pageindex-1)*@pagesize+1
--游标第一次移动到的位置,比如我们需要第10到15条记录,那么这个参数的值是11
set @endindex = @pageindex*@pagesize
--游标第二次移动到的位置,如上,这个值应该是15
if @endindex > @totalrecord
set @endindex = @totalrecord
--确保第二次移动不超过记录的总条数
fetch absolute @startindex from cur_book_page
into @current_startindex
--移动游标,得到第11条记录的Id,存储在参数中
fetch absolute @endindex from cur_book_page
into @current_endindex
--移动游标,得到第15条记录的Id,存储在参数中
select * from bookclass where id between @current_endindex and @current_startindex order by id desc
--得到所需的记录。注意id排列的顺序,确保between 小id and 大id,在本例中是倒序排列,所以@current_startindex是小于@current_endindex的
end
else
begin
set @pagetotal = 0
select top 0 * from bookclass
end
close cur_book_page
--关闭游标
deallocate cur_book_page
--释放游标
GO
--定义几个变量
declare cur_book_page scroll cursor for
select id from bookclass order by id desc
--定义一个滚动游标
open cur_book_page
--打开游标
set @totalrecord = @@cursor_rows
--得到总的记录数
if @totalrecord > 0
begin
if @totalrecord % @pagesize = 0
set @pagetotal = @totalrecord / @pagesize
else
set @pagetotal = @totalrecord / @pagesize + 1
--得到总页数
if @pageindex < 1
set @pageindex = 1
if @pageindex > @pagetotal
set @pageindex = @pagetotal
--检查输入参数,确保它在1到总页数之间
set @startindex = (@pageindex-1)*@pagesize+1
--游标第一次移动到的位置,比如我们需要第10到15条记录,那么这个参数的值是11
set @endindex = @pageindex*@pagesize
--游标第二次移动到的位置,如上,这个值应该是15
if @endindex > @totalrecord
set @endindex = @totalrecord
--确保第二次移动不超过记录的总条数
fetch absolute @startindex from cur_book_page
into @current_startindex
--移动游标,得到第11条记录的Id,存储在参数中
fetch absolute @endindex from cur_book_page
into @current_endindex
--移动游标,得到第15条记录的Id,存储在参数中
select * from bookclass where id between @current_endindex and @current_startindex order by id desc
--得到所需的记录。注意id排列的顺序,确保between 小id and 大id,在本例中是倒序排列,所以@current_startindex是小于@current_endindex的
end
else
begin
set @pagetotal = 0
select top 0 * from bookclass
end
close cur_book_page
--关闭游标
deallocate cur_book_page
--释放游标
GO