存储过程定义: CREATE procedure [dbo].[SplitPage]( @SelectCommandText nvarchar(4000), -- 要执行的查询命令 @CurrentPageIndex int = 0, -- 当前页的索引,从 0 开始 @PageSize int = 20, -- 每页的记录数 @RowCount int = 0 out, -- 总的记录数 @PageCount int = 0 out -- 总的页数)ASIF @PageSize <= 0BEGIN RAISERROR('参数 PageSize 必须大于零。', 16, 1); RETURNENDDECLARE @p1 intDECLARE @RowIndex intSET @CurrentPageIndex = @CurrentPageIndex + 1EXEC sp_cursoropen @p1 output, @SelectCommandText, @scrollopt = 1, @ccopt = 1, @RowCount = @RowCount output;SET @PageCount = ceiling(1.0 * @RowCount / @PageSize);SET @RowIndex = (@CurrentPageIndex - 1) * @PageSize + 1EXEC sp_cursorfetch @p1, 16, @RowIndex, @PageSize;EXEC sp_cursorclose @p1 调用方法: DECLARE @return_value int, @RowCount int, @PageCount intEXEC @return_value = [dbo].[SplitPage] @SelectCommandText = N'SELECT * FROM Log', @CurrentPageIndex = 0, @PageSize = 4, @RowCount = @RowCount OUTPUT, @PageCount = @PageCount OUTPUTSELECT @RowCount as N'@RowCount', @PageCount as N'@PageCount'SELECT 'Return Value' = @return_valueGO