分页存储过程(用存储过程实现数据库的分页代码) |
本文标签:分页,存储过程 复制代码 代码如下: --******************************************************* --* 分页存储过程 * --* 撒哈拉大森林 * --* 2010-6-28 * --******************************************************* if exists(select * from sysobjects where type=P and name=NP_Paging) drop procedure P_Paging go create procedure P_Paging @SqlStr nvarchar(4000), --查询字符串 @CurrentPage int, --第N页 @PageSize int --每页行数 as set nocount on declare @P1 int, --P1是游标的id @rowcount int exec sp_cursoropen @P1 output,@SqlStr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output select ceiling(1.0*@rowcount/@PageSize) as 总页数--,@rowcount as 总行数,@CurrentPage as 当前页 set @CurrentPage=(@CurrentPage-1)*@PageSize+1 exec sp_cursorfetch @P1,16,@CurrentPage,@PageSize exec sp_cursorclose @P1 set nocount off go ----创建测试表 --if exists(select * from sysobjects where type=U and name=NTest_Students) -- drop table Test_Students --go --create table Test_Students( -- id int IDENTITY(1,1) not null, -- name nvarchar(100) not null --) -- ----创建测试数据 --declare @i int --set @i = 100000 --while @i>0 -- begin -- insert into Test_Students values(姓名) -- set @i = @i - 1 -- end -- ----执行存储过程 --exec P_Paging select * from Test_Students order by id,100,100 --执行 -- ----删除测试表 --if exists(select * from sysobjects where type=U and name=NTest_Students) -- drop table Test_Students --go |