SQLSERVER 高效率分页存储过程
2017-11-21 14:09
267 查看
IF OBJECT_ID('[usp_Common_Sel_TableData]') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[usp_Common_Sel_TableData] END GO /* declare @PageCount int,@RecordCount int exec [usp_Common_Sel_TableData] @TableName=N'vw_Sale_SaleContract_All', @ReturnFields=N'*', @PageSize=10, @PageIndex=1, @FilterString=N'CompanyID=309', @SortExpression=N'CreateTime DESC', @PageCount=@PageCount output, @RecordCount=@RecordCount output SELECT @PageCount as N'PageCount',@RecordCount as N'RecordCount' */ CREATE PROCEDURE [dbo].[usp_Common_Sel_TableData] @TableName NVARCHAR(2000), -- 表名 @ReturnFields NVARCHAR(1000) = '*', -- 查询列数 @PageSize INT = 10, -- 每页数目 @PageIndex INT = 1, -- 当前页码 @FilterString NVARCHAR(1000) = '', -- 查询条件 @SortExpression NVARCHAR(1000), -- 排序字段 @PageCount INT OUTPUT, -- 页码总数 @RecordCount INT OUTPUT -- 记录总数 AS --设置属性 SET NOCOUNT ON -- 变量定义 DECLARE @TotalRecord INT DECLARE @TotalPage INT DECLARE @CurrentPageSize INT DECLARE @TotalRecordForPageIndex INT BEGIN IF @FilterString IS NULL SET @FilterString=N'' IF(@FilterString<>'') SET @FilterString=N'WHERE '+@FilterString -- 记录总数 DECLARE @countSql NVARCHAR(4000) IF @RecordCount IS NULL BEGIN SET @countSql='SELECT @TotalRecord=Count(*) From '+@TableName+' '+@FilterString EXECUTE sp_executesql @countSql,N'@TotalRecord int out',@TotalRecord OUT END ELSE BEGIN SET @TotalRecord=@RecordCount END SET @RecordCount=@TotalRecord SET @TotalPage=(@TotalRecord-1)/@PageSize+1 SET @CurrentPageSize=(@PageIndex-1)*@PageSize -- 返回总页数和总记录数 SET @PageCount=@TotalPage SET @RecordCount=@TotalRecord -- 返回记录 SET @TotalRecordForPageIndex=@PageIndex*@PageSize EXEC ('SELECT * FROM (SELECT TOP '+@TotalRecordForPageIndex+' '+@ReturnFields+', ROW_NUMBER() OVER (ORDER BY '+@SortExpression+') AS PageView_RowNo FROM '+@TableName+ ' ' + @FilterString +' ) AS TempPageViewTable WHERE TempPageViewTable.PageView_RowNo > '+@CurrentPageSize) END GO
相关文章推荐
- asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- asp+sqlserver 分页方法(不用存储过程)
- asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- Sqlserver Top 方式分页存储过程
- 分页存储过程(三)在sqlserver中打造更加准确的分页结果
- 一个高效率的分页存储过程
- SQLSERVER 存储过程实现分页查询 C#后台获取查询结果集
- PostgGresql如何简单实现sqlserver中的分页存储过程
- datalist海量数据表高效率分页算法(不使用存储过程)
- asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- SQLServer用存储过程实现分页
- sqlserver 2000 高效分页存储过程
- SQLServer用存储过程实现分页
- sqlserver 2000 高效分页存储过程
- sqlserver高效率分页实现
- asp + sqlserver 分页方法(不用存储过程)
- asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
- SQLServer大量数据高效率分页
- asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)