如何实现SQL Server 2000 分页的存储过程?


  本文标签:SQL Server 2000 分页

  此文主要讲述的是SQL Server 2000 分页的存储过程,以及对实现SQL Server 2000 分页的存储过程的实际应用代码的描述,以下就是具体方案的描述,希望在你今后的学习中会有所帮助  。

  1. set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go  
  2. set ANSI_NULLS ON  
  3. set QUOTED_IDENTIFIER ON  
  4. go  
  5. /*  

  利用SQL未公开的存储过程实现SQL Server 2000分页方法简单且效率高,已知的问题就是要多返回一个空的记录集解决的方法是在前台调用时,用

  1. set recordsetrecordset=recordset.nextrecordset 

  的方法跳过第一个记录集此方法由J9988提供,改成了方便调用的存储过程,邹建2004.05(引用请保留此信息),缺点是返回2张表,第一张是空表,第二张才有数据调用示例

  1. declare @PageCount int  
  2. exec sp_PageView  
  3. @sql=select * from sysobjects,  
  4. @PageCurrent=2,  
  5. @PageCount=@PageCount out  
  6. SELECT @PageCount  
  7. */  
  8. Create PROC [dbo].[sp_PageView]  
  9. @sql ntext, 

  要执行的sql语句

  @PageCurrent int=1, 要显示的页码

  @PageSize int=10, 每页的大小

  @PageCount int OUTPUT 总页数

  1. AS  
  2. SET NOCOUNT ON  
  3. DECLARE @p1 int 

  初始化SQL Server 2000分页游标

  1. EXEC sp_cursoropen  
  2. @cursor=@p1 OUTPUT,  
  3. @stmt=@sql,  
  4. @scrollopt=1,  
  5. @ccopt=1,  
  6. @rowcount=@PageCount OUTPUT 

  

  计算总页数

  1. IF ISNULL(@PageSize,0)<1 
  2. SET @PageSize=10 
  3. SET @PageCount=(@PageCount+@PageSize-1)/@PageSize  
  4. IF ISNULL(@PageCurrent,0)<1 OR ISNULL(@PageCurrent,0)>@PageCount  
  5. SET @PageCurrent=1 
  6. ELSE  
  7. SET @PageCurrent=(@PageCurrent-1)*@PageSize+1 

  

  显示指定页的数据

  1. EXEC sp_cursorfetch @p1,16,@PageCurrent,@PageSize 

  c关闭SQL Server 2000分页游标

 

  1. EXEC sp_cursorclose @p1 

  以上的相关内容就是对SQL Server 2000 分页的存储过程的介绍,望你能有所收获  。