• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    数据库存储过程分页显示
    注:需要建立索引
    复制代码 代码如下:

    /*
    经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
    exec GetRecordFromPage news,newsid,10,100000
    news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。
    */

    /*
    函数名称: GetRecordFromPage
    函数功能: 获取指定页的数据
    参数说明: @tblName 包含数据的表名
    @fldName 关键字段名
    @PageSize 每页记录数
    @PageIndex 要获取的页码
    @OrderType 排序类型, 0 - 升序, 1 - 降序
    @strWhere 查询条件 (注意: 不要加 where)
    作  者: 铁拳
    邮  箱: unjianhua_kki@sina.com">sunjianhua_kki@sina.com
    创建时间: 2004-07-04
    修改时间: 2004-07-04
    */
    Create PROCEDURE GetRecordFromPage
    @tblName varchar(255), -- 表名
    @fldName varchar(255), -- 字段名
    @PageSize int = 10, -- 页尺寸
    @PageIndex int = 1, -- 页码
    @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
    @strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where)
    AS

    declare @strSQL varchar(6000) -- 主语句
    declare @strTmp varchar(1000) -- 临时变量
    declare @strOrder varchar(500) -- 排序类型

    if @OrderType != 0
    begin
    set @strTmp = "(select min"
    set @strOrder = " order by [" + @fldName +"] desc"
    end
    else
    begin
    set @strTmp = ">(select max"
    set @strOrder = " order by [" + @fldName +"] asc"
    end

    set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
    + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
    + @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
    + @strOrder

    if @strWhere != ''
    set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
    + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
    + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
    + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

    if @PageIndex = 1
    begin
    set @strTmp = ""
    if @strWhere != ''
    set @strTmp = " where (" + @strWhere + ")"

    set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "]" + @strTmp + " " + @strOrder
    end

    exec (@strSQL)

    GO

    上一篇:一个比较实用的大数据量分页存储过程
    下一篇:Mysql中undo、redo与binlog的区别浅析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    数据库存储过程分页显示 数据库,存储,过程,分页,