zoukankan      html  css  js  c++  java
  • 分页存储过程

    分页存储过程

    create PROCEDURE Sp_Conn_Sort

    (
    @tblName   varchar(255),       -- 表名

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

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

    @PageSize   int = 40,          -- 页尺寸

    @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)

    -----------------

  • 相关阅读:
    2.5 tensorflow2.3--变量Variable声明和初始化
    2.4 tensorflow 2.3学习--- 矩阵
    2.3 tensorflow 2.3学习--向量
    C++11最新特性总结
    c++多态和虚函数表实现原理
    Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
    Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理9
    Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7
    Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理5
    Vue快速学习_第一节
  • 原文地址:https://www.cnblogs.com/sandyliu1999/p/4817485.html
Copyright © 2011-2022 走看看