zoukankan      html  css  js  c++  java
  • 通用高效分页存储过程代码

    -- 获取指定页的数据
    CREATE PROCEDURE pagination
    @tblName varchar(255), -- 表名
    @strGetFields varchar(1000= '*'-- 需要返回的列
    @fldName varchar(255)=''-- 排序的字段名
    @PageSize int = 10-- 页尺寸
    @PageIndex int = 1-- 页码
    @doCount bit = 0-- 返回记录总数, 非 0 值则返回
    @OrderType bit = 0-- 设置排序类型, 非 0 值则降序
    @strWhere varchar(1500= '' -- 查询条件 (注意: 不要加 where)
    AS

    declare @strSQL varchar(5000-- 主语句
    declare @strTmp varchar(110-- 临时变量
    declare @strOrder varchar(400-- 排序类型
    if @doCount != 0
    begin
    if @strWhere !=''
    set @strSQL = "select count(*as Total from [" + @tblName + "] where "+@strWhere
    else
    set @strSQL = "select count(*as Total from [" + @tblName + "]"
    end
    --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

    else
    begin
    if @OrderType != 0
    begin
    set @strTmp = "<(select min"
    set @strOrder = " order by [" + @fldName +"] desc"
    --如果@OrderType不是0,就执行降序,这句很重要!
    end

    else
    begin
    set @strTmp = ">(select max"
    set @strOrder = " order by [" + @fldName +"] asc"
    end
    if @PageIndex = 1
    begin
    if @strWhere != ''
    set @strSQL = "select top " + str(@PageSize+" "+@strGetFields+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder
    else
    set @strSQL = "select top " + str(@PageSize+" "+@strGetFields+ " from ["+ @tblName + "] "+ @strOrder
    --如果是第一页就执行以上代码,这样会加快执行速度
    end

    else
    begin
    --以下代码赋予了@strSQL以真正执行的SQL代码
    set @strSQL = "select top " + str(@PageSize+" "+@strGetFields+ " 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+" "+@strGetFields+ " from ["
    + @tblName + "
    ] where [" + @fldName + "]+ @strTmp + "(["
    + @fldName + "
    ]from (select top " + str((@PageIndex-1)*@PageSize+ " ["
    + @fldName + "
    ] from [" + @tblName + "] where " + @strWhere + " "
    + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder
    end
    end
    exec (@strSQL)
    GO
  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/chinatefl/p/326018.html
Copyright © 2011-2022 走看看