`

使用sp_cursoropen、sp_cursorfetch、sp_cursorclose实现分页

阅读更多
    if exists (select * from dbo.sysobjects   
      where id = object_id(N'[dbo].[p_splitpage]')   
      and OBJECTPROPERTY(id, N'IsProcedure') = 1)   
    drop procedure [dbo].[p_splitpage]   
    GO   
    
    create procedure p_splitpage       
    @sql nvarchar(4000), --要执行的sql语句   
    @currentpage int=2, --要显示的页码   
    @pagesize int=10, --每页的大小   
    @recordcount int=0 out, --记录数   
    @pagecount int=0 out --总页数   
    as   
    set nocount on   
    declare @p1 int   
    
    exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output   
    
    select @recordcount=@pagecount,@pagecount=ceiling(1.0*@pagecount/@pagesize)       
    ,@currentpage=(@currentpage-1)*@pagesize+1       
    select @recordcount recordcount ,@pagecount     pagecount,@currentpage     currentpage   
    exec sp_cursorfetch @p1,16,@currentpage,@pagesize       
    exec sp_cursorclose @p1   
    go
分享到:
评论

相关推荐

    最简单的SQL Server数据库存储过程分页

    `:使用系统存储过程`sp_cursoropen`打开一个游标。这里`@scrollopt = 1`表示游标类型为静态游标,`@ccopt = 335873`表示允许滚动和只读等属性,`@rowcount = @nRowCount OUTPUT`将查询结果的行数输出到`@nRowCount`...

    计算机等考三级数据库基础:一个游标的sqlserver存储过程.docx

    `sp_cursoropen`系统存储过程用于打开一个游标,传入的参数包括游标ID、查询语句、滚动选项(`@scrollopt`)和并发选项(`@ccopt`),以及用于输出查询结果行数的`@rowcount`。 `sp_cursoropen`执行后,计算总页数...

    sqlserver常用的存储过程

    此存储过程通过 `sp_cursoropen` 和 `sp_cursorfetch` 实现了对数据的分页处理。其中 `sp_cursoropen` 用于打开游标并获取总记录数,而 `sp_cursorfetch` 则用于根据指定的页码和每页显示记录数获取具体的数据。 ##...

    百万级的分页存储过程

    - 使用`EXEC sp_cursoropen`函数打开游标`@P1`,并通过查询字符串`@sqlstr`执行查询操作。其中,`@scrollopt=1`表示支持向前滚动游标,`@ccopt=1`表示支持当前键游标。 - `@rowcount=@rowcountOUTPUT`用于获取查询...

    sql分页

    2. **开启游标**:通过`sp_cursoropen`函数打开一个游标,并设置相关选项,如`@scrollopt = 1`表示可滚动游标,`@ccopt = 1`表示关闭游标时自动释放资源。 3. **计算总页数**:通过`CEILING`函数计算总页数,确保...

    常用存储过程集锦

    这个存储过程接受查询SQL、当前页码和每页记录数作为参数,通过`sp_cursoropen`、`sp_cursorfetch`和`sp_cursorclose`系统存储过程来执行分页查询,并计算总记录数和总页数。`set nocount on`用于关闭行计数,提高...

    利用SqlServer内部存储过程实现快速方便的分页.txt

    - 首先使用 `sp_cursoropen` 打开一个游标,并获取总的记录数。 - 计算出当前页的第一条记录的索引位置。 - 使用 `sp_cursorfetch` 从游标中获取指定范围内的记录。 - 最后关闭游标。 ##### 2. 使用示例 调用该...

    Oracle,SQl,MySql实现分页查询

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scroll_opt = 1, @cc_opt = 1, @rowcount = @rowcount OUTPUT; SELECT CEILING(1.0 * @rowcount / @pagesize) AS total_pages; SET @currentpage = (@currentpage - 1)...

    SQLServer 常用存储过程

    2. **打开游标并计算总数**: 使用 `sp_cursoropen` 打开一个游标,并通过输出参数 `@RowCount` 获取总记录数。 3. **计算总页数**: 根据总记录数和每页大小计算出总页数。 4. **设置当前页起始位置**: 根据当前页码...

    SQL Server分页存储过程

    - 使用 `sp_cursoropen` 打开一个游标,执行 `@strSql` 查询并获取总记录数 `@rowCount`。 - 计算总页数 `@PageCount`,通过将总记录数除以每页记录数并向上取整得到。 - 更新 `@currentPage` 以确定要提取的页的第...

    用SQL实现分页的三种方法

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scrollopt = 1, @ccopt = 1, @rowcount = @rowcount OUTPUT SELECT CEILING(1.0 * @rowcount / @pagesize) AS 总页数, @rowcount AS 总行数, @currentpage AS 当前页 ...

    SQL Server 分页方案比拼

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @ScrollOpt = 1, @Ccopt = 1, @RowCount = @RowCount OUTPUT SELECT CEILING(1.0 * @RowCount / @PageSize) AS TotalPages -- ,@RowCount AS TotalRows, @CurrentPage AS ...

    SQL分页语句的三种方法的比较

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scroll_opt = 1, @cc_opt = 1, @rowcount = @rowcount OUTPUT; SELECT CEILING(1.0 * @rowcount / @pagesize) AS 总页数; -- , @rowcount AS 总记录数, @currentpage AS ...

    在SQL Server中通过SQL语句实现分页查询

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scrollopt = 1, @ccopt = 1, @rowcount = @rowcount OUTPUT SELECT CEILING(1.0 * @rowcount / @pagesize) AS 总页数, -- ,@rowcount AS 总行数, @currentpage AS 当前页 ...

    c#分页方案

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scrollopt = 1, @ccopt = 1, @rowcount = @rowcount OUTPUT; SELECT CEILING(1.0 * @rowcount / @pagesize) as 总页数 -- ,@rowcount as 总行数, @currentpage as 当前页 ...

    标准SQLServer分页存储过程

    - 打开游标:使用`sp_cursoropen`系统存储过程创建一个游标,参数`@scrollopt=2`表示游标支持向前滚动,`@ccopt=335873`是一个复合标志,表示游标具有静态属性(即游标打开时锁定数据)。 - 执行查询:通过`EXEC`...

    sql分页技术(三种方法)

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scrollOpt = 1, @ccOpt = 1, @rowCount = @rowCount OUTPUT; SELECT CEILING(1.0 * @rowCount / @pageSize) AS 总页数, -- 计算总页数 @rowCount AS 总记录数, @...

    存储过程的分页方案比拼

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scrollOpt = 1, @ccOpt = 1, @rowCount = @rowCount OUTPUT; SELECT CEILING(1.0 * @rowCount / @pageSize) AS 总页数, -- @rowCount as 总记录数, @currentpage as 当前...

    三种SQL分页法效率分析

    EXEC sp_cursoropen @P1 OUTPUT, @sqlstr, @scrollopt=1, @ccopt=1, @rowcount=@rowcount OUTPUT; SELECT CEILING(1.0*@rowcount/@pagesize) AS 总页数, --, @rowcount AS 总行数, @currentpage AS 当前页 (@...

Global site tag (gtag.js) - Google Analytics