SQL Server通用分页存储过程:利用SQL Server未公开的存储过程实现
2007-11-11 12:26:39 来源:WEB开发网存储过程定义:
/**//****** 对象: StoredProcedure [dbo].[SplitPage] 脚本日期: 04/23/2007 16:10:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[SplitPage]
(
@SelectCommandText nvarchar(4000), -- 要执行的查询命令
@CurrentPageIndex int = 0, -- 当前页的索引,从 0 开始
@PageSize int = 20, -- 每页的记录数
@RowCount int = 0 out, -- 总的记录数
@PageCount int = 0 out -- 总的页数
)
AS
SET NOCOUNT ON
DECLARE @p1 int
SET @CurrentPageIndex = @CurrentPageIndex + 1
EXEC sp_cursoropen
@p1 output,
@SelectCommandText,
@scrollopt = 1,
@ccopt = 1,
@RowCount = @RowCount output;
SELECT @RowCount;
SELECT @PageCount = ceiling(1.0 * @RowCount / @PageSize);
SELECT @CurrentPageIndex = (@CurrentPageIndex - 1) * @PageSize + 1
EXEC sp_cursorfetch
@p1,
16,
@CurrentPageIndex,
@PageSize;
EXEC sp_cursorclose
@p1
调用方法:
DECLARE @return_value int,
@RowCount int,
@PageCount int
EXEC @return_value = [dbo].[SplitPage]
@SelectCommandText = N'SELECT * FROM Log',
@CurrentPageIndex = 0,
@PageSize = 4,
@RowCount = @RowCount OUTPUT,
@PageCount = @PageCount OUTPUT
SELECT @RowCount as N'@RowCount',
@PageCount as N'@PageCount'
SELECT 'Return Value' = @return_value
GO
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接