分页存储过程(用存储过程实现数据库的分页代码)数据库教程 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

   

    复制代码代码如下:

    --*******************************************************

    --* 分页存储过程 *

    --* 撒哈拉大森林 *

    --* 2010-6-28 *

    --*******************************************************

    if exists(select * from sysobjects where type='P' and name=N'P_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=N'Test_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=N'Test_Students')

    -- drop table Test_Students

    --go

最新文章