博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
毫秒级百万数据分页存储过程
阅读量:4957 次
发布时间:2019-06-12

本文共 3373 字,大约阅读时间需要 11 分钟。

/****** Object:  StoredProcedure [dbo].[up_Page2005]    Script Date: 11/28/2013 17:10:47 ******/    SET ANSI_NULLS ON   GO    SET QUOTED_IDENTIFIER ON   GO       CREATE PROC [dbo].[up_Page2005]        (          @TableName VARCHAR(MAX) ,        --表名                          @Fields VARCHAR(5000) = ''*'' ,    --字段名(全部字段为*)                          @OrderField VARCHAR(5000) ,        --排序字段(必须!支持多字段)                          @sqlWhere VARCHAR(5000) = NULL ,--条件语句(不用加where)                          @pageSize INT ,                    --每页多少条记录                          @pageIndex INT = 1             --指定当前为第几页                    )    AS         BEGIN                            DECLARE @sql NVARCHAR(MAX);                            DECLARE @totalRecord INT;                            DECLARE @TotalPage INT;                                                    --计算总记录数                                          IF ( @SqlWhere = ''''                OR @sqlWhere = NULL              )                 SET @sql = ''select @totalRecord = count(*) from '' + @TableName                            ELSE                 SET @sql = ''select @totalRecord = count(*) from '' + @TableName                    + '' where 1=1 '' + @sqlWhere                                                EXEC sp_executesql @sql, N''@totalRecord int OUTPUT'',                @totalRecord OUTPUT--计算总记录数                                                --计算总页数                            SELECT  @TotalPage = CEILING(( @totalRecord + 0.0 ) / @PageSize)                                                IF ( @SqlWhere = ''''                OR @sqlWhere = NULL              )                 SET @sql = ''Select top ('' + CONVERT(VARCHAR, @pageSize) + '') ''                   + @Fields + '' FROM (select ROW_NUMBER() Over(order by ''                   + @OrderField + '') as 编号,'' + @Fields + '' from '' + @TableName                             ELSE                 SET @sql = ''Select top ('' + CONVERT(VARCHAR, @pageSize) + '') ''                   + @Fields + '' FROM (select ROW_NUMBER() Over(order by ''                   + @OrderField + '') as 编号,'' + @Fields + '' from '' + @TableName                    + '' where 1=1 '' + @SqlWhere                                                                           --处理页数超出范围情况                            IF @PageIndex <= 0                 SET @pageIndex = 1                                                    IF @pageIndex > @TotalPage                 SET @pageIndex = @TotalPage                                             --处理开始点和结束点                            DECLARE @StartRecord INT                            DECLARE @EndRecord INT                                                    SET @StartRecord = ( @pageIndex - 1 ) * @PageSize + 1                            SET @EndRecord = @StartRecord + @pageSize - 1                                            --继续合成sql语句                            SET @Sql = @Sql + '') as t where 编号>='' + CONVERT(VARCHAR, @StartRecord)                + '' order by 编号''                   EXEC(@Sql)                                IF @@Error <> 0                 RETURN -1                              ELSE                 SELECT  @totalRecord ,                        @TotalPage ---返回记录总数,返回总页数                           END

 转自:

posted on
2014-08-06 09:50 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/amomzk/p/3893787.html

你可能感兴趣的文章
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
深入了解Oracle ASM(二):ASM File number 1 文件目录
查看>>
Boosting(提升方法)之AdaBoost
查看>>
链接元素<a>
查看>>
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
第二章:webdriver 控制浏览器窗口大小
查看>>
【动态规划】流水作业调度问题与Johnson法则
查看>>
Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
查看>>
活现被翻转生命
查看>>