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

    CREATE   PROCEDURE   [dbo].[getPage]
    @pageSize int,              --页尺寸
    @currentPage int,           --当前页
    @tableFields varchar(2000), --返回的字段
    @tableName   varchar(200),  --表名
    @orderString varchar(1000), --排序字符串
    @whereString varchar(1000), --条件字符串
    @IsReCount   bit = 0        -- 返回记录总数, 非 0 值则返回
    AS
    BEGIN

    if   @currentPage   <   1   set   @currentPage   =   1

    DECLARE   @strSql   varchar(2000)
    DECLARE   @strOrder varchar(2000)
    DECLARE   @strWhere varchar(2000)

    set   @strOrder   =   REPLACE(RTRIM(LTRIM(@orderString)), 'order   By ', ' ')
    if   @strOrder   !=   ''  set   @strOrder   =   '   order   By   '   +   @strOrder

    set   @strWhere   =   REPLACE(RTRIM(LTRIM(@whereString)), 'where ', ' ')
    if   @strWhere   !=   ''
         set   @strWhere   =   '   where   '   +   @strWhere
    else
         set   @strWhere   =   '   where  1=1  '  

    if   @pageSize   =   0
        set   @strSql   =   'select   '   +   @tableFields   +   '   from   '   +   @tableName   +   @strWhere   +   @strOrder
    else
        if   @currentPage   =   1
            set   @strSql   =   'select   top( '   +   Str(@pageSize)   +   ')   '   +   @tableFields   +   '   from   '   +   @tableName   +   @strWhere   +   @strOrder
        else
            begin
            set   @strSql   =   'select   top( '   +   Str(@pageSize)   +   ')   *   from   (select   top( '   +   Str(@pageSize   *   @currentPage)   +   ')   '   +   @tableFields   +   ',   ROW_NUMBER()   OVER   ( '
            set   @strSql   =   @strSql   +   @strOrder
            set   @strSql   =   @strSql   +   ')   As   RowNumber   From   '   +   @tableName
            set   @strSql   =   @strSql   +   @strWhere
            set   @strSql   =   @strSql   +   ')   as   t   where   t.RowNumber   >   '   +   Str(@pageSize   *   (@currentPage   -   1))
            set   @strSql   =   @strSql   +   @strOrder
            end

    if @IsReCount != 0
        set @strSql = 'select count(*) as Total from [' + @tableName + ']  ' + @strWhere

    exec(@strSql)
    END

  • 相关阅读:
    让windows cmd也用上linux命令
    数据库工具toad与plsql
    Oracle表&DATA复制
    主流WEB开发语言简单对比
    游戏中的碰撞检测
    LRU算法总结及其C算法实现
    MTU
    多款as3游戏框架
    请问2.3e+71,是不是表示23后面有70个0?
    希望OFFICE有一个小阳台,在阳光斜照的下午,开发人员能喝着茶,在蓝色的天空下讨论问题,这样思绪更为清楚
  • 原文地址:https://www.cnblogs.com/yuqi2008/p/1575880.html
Copyright © 2011-2022 走看看