--通用分页

ALTER PROCEDURE [dbo].[Sys_Pagination_1]

@tblName VARCHAR(2000) , -- 表名

@strGetFields VARCHAR(1000) = '*' , -- 需要返回的列

@fldName VARCHAR(255) = '' , -- 排序的字段名

@PageSize INT = 10 , -- 页尺寸

@PageIndex INT = 1 , -- 页码

@OrderType BIT = 0 , -- 设置排序类型, 非 0 值则降序

@strWhere VARCHAR(2500) = '' -- 查询条件 (注意: 不要加 where)

AS

BEGIN

--处理开始点和结束点

DECLARE @strOrder VARCHAR(400) -- 排序类型

DECLARE @MaxCode NVARCHAR(100) --记录个数

DECLARE @StartRecord INT;

DECLARE @EndRecord INT;

DECLARE @TotalCountSql NVARCHAR(4000);

DECLARE @SqlString NVARCHAR(4000);

SET @StartRecord = ( @PageIndex - 1 ) * @PageSize + 1

SET @EndRecord = @StartRecord + @PageSize - 1

IF @OrderType != 0

BEGIN

SET @strOrder = ' order by ' + @fldName + ' desc'

--如果@OrderType不是0,就执行降序,这句很重要!

END

ELSE

BEGIN

SET @strOrder = ' order by ' + @fldName + ' asc'

END

SET @TotalCountSql = N'select @Max_ID = count(*) from ' + @tblName;--总记录数语句

SET @SqlString = N'(select row_number() over (' + @strOrder

+ ') as rowId,' + @strGetFields + ' from ' + @tblName;--查询语句

IF ( @strWhere ! = ''

OR @strWhere != NULL

)

BEGIN

SET @TotalCountSql = @TotalCountSql + ' where ' + @strWhere;

SET @SqlString = @SqlString + ' where ' + @strWhere;

END

--第一次执行得到

--IF(@TotalRecord is null)

-- BEGIN

EXEC sp_executesql @totalCountSql, N'@Max_ID varchar(100) output',

@MaxCode OUTPUT;--返回总记录数

PRINT @totalCountSql

-- END

----执行主语句

SET @SqlString = 'select ' + @strGetFields + ' from ' + @SqlString

+ ') as t where rowId between ' + LTRIM(STR(@StartRecord))

+ ' and ' + LTRIM(STR(@EndRecord));

EXEC(@SqlString)

PRINT @SqlString

RETURN @MaxCode

END

SQL 分页实现的更多相关文章

  1. sql分页操作

    看到了网上关于分页的讲解  对最快的分页语句做了测试 还别说速度真快 总共6w条数据 速度确实so 快 前提是id是主键 或者是索引 declare @page int;--页数 declare @P ...

  2. SQL Server SQL分页查询

    SQL Server SQL分页查询的几种方式 目录 0.    序言 1.    TOP…NOT IN… 2.    ROW_NUMBER() 3.    OFFSET…FETCH 4.    执行 ...

  3. sql分页代码

    //三种sql分页语句 SELECT TOP 分页尺寸 * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM Blob ...

  4. SQL分页查询结果不一致

    今天遇到了SQL分页查询结果不一致的情况,一看代码,原来是没加排序查询!!分页查询最好加排序,且以唯一性高的字段进行排序,如ID,时间等,以保持每页查询结果的准确! PS:又帮别人擦屁股!!

  5. 真正通用的SQL分页存储过程

    关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加 ...

  6. oracle15 pl/sql 分页

    PL/SQL分页 编写分页过程 无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程: ...

  7. [转]关于SQL分页存储过程的分析

    [转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...

  8. SQL点滴16—SQL分页语句总结

    原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...

  9. oracle sql 分页

    Oracle实现分页时,需要引入一个rownum的函数,rownum可以给记录一个类似于id的字段. 以下收整理了常用的几种sql分页算法,数据库以Oracle中emp为例.查询结果如下: SQL&g ...

  10. pageHelper多个sql分页

    之前有个需求,在一个页面中需要有多个sql分页查询然后放到一个list中,展示,但是会出现一个bug,就是每次分页都会展示第一条查出的所有的数据: 第一页 第二页 因为是截的生产环境,第一条数据被处理 ...

随机推荐

  1. [原创] 新人分享--ORA-01012:not logged on的解决办法 [复制链接]

    转自:http://f.dataguru.cn/thread-82530-1-1.html

  2. unreal3启动地图设置

    在defaultengine.ini中[URL]节: Map=MOBATinyMap.udkLocalMap=MOBATinyMap.udk 这里有Map和LocalMap两个属性,让人有点混淆,只好 ...

  3. ant安装和配置

    一.安装ant到官方主页http://ant.apache.org下载新版(我用的1.9.2)的ant,得到的是一个apache-ant-1.9.2-bin.zip的压缩包.将其解压到你的硬盘上,例如 ...

  4. 关于奇异值分解(SVD)的理解

    奇异值分解实际上是将一个矩阵,分解成为两个不同维度(行数和列数)上的正交向量集之间的映射变换,奇异值则是变换时的缩放! 例如上面的矩阵M就是一个5维映射到4维的变换矩阵,而SVD分解得到的奇异值和奇异 ...

  5. TMF SID中的角色模式

    角色模式 Copyright © TeleManagement Forum 2013. All Rights Reserved. This document and translations of i ...

  6. 工作随记——弹出QQ联系方式

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=1&uin=QQ号码&site=qq& ...

  7. C# 原码与补码的转换

    /// <summary> /// 求一个16位数数的补码 /// </summary> /// <param name="OriginalCode" ...

  8. [CentOS7] 设备与文件名对应表

  9. Java面向对象的三大特性 多态

    多态 对象的多种形态 继承是实现多态的基础 1,引用多态    父类的引用可以指向本类的对象    父类的引用可以指向子类的对象 2,方法多态    创建本类对象时,调用的方法为本类方法    创建子 ...

  10. 读取某文件夹下所有excel文件 python

    import os import pandas as pd from sklearn import linear_model path = r'D:\新数据\每日收益率' filenames = os ...