CREATE PROCEDURE page
@tblName   varchar(255),       -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='id',      -- 排序的字段名
@PageSize   int = 10,          -- 页尺寸
@PageIndex int = 1,           -- 页码
@doCount bit = 0,   -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 0:asc 1:desc
@strWhere varchar(1500) = '', -- 查询条件 (注意: 不要加 where)
@ID nvarchar(50)='id' --主表的列。。最好是主键
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 + '( '+ @ID + ' ) 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 + '('
                + @ID + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '
                + @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '
                + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
    end
end  
exec (@strSQL)

转载于:https://www.cnblogs.com/rhc2005163/archive/2012/04/05/2433137.html

转存储过程实现分页1相关推荐

  1. 三层架构+ajax分页实例,ASP.NET存储过程实现分页效果(三层架构)

    本文实例为大家分享了ASP.NET存储过程实现分页的具体代码,供大家参考,具体内容如下 实现效果: 文本框内输入跳转的页数,点击GO会跳转到该页 首先在项目下加入BLL,DAL,DataAccess, ...

  2. SQL Server 存储过程的分页方案比拼

    建立表: CREATE TABLE [TestTable] (  [ID] [int] IDENTITY (1, 1) NOT NULL ,  [FirstName] [nvarchar] (100) ...

  3. SQL Server 存储过程的分页

    Code --建立表: CREATE TABLE [TestTable] (  [ID] [int] IDENTITY (1, 1) NOT NULL ,  [FirstName] [nvarchar ...

  4. 存储过程DataGrid分页及注意点

    sqlserver中的存储过程完整代码 /***************************************************************** * 存储过程名: GetC ...

  5. 使用存储过程创建分页

    在实际的开发过程中,经常遇到存储过程分页,下面根据实际情况总结的几种方法: 数据库名称:myTest 1.思路:利用select top and select not in 排除例外情况的分页 use ...

  6. oralce用存储过程实现分页 以及 用java调用这个存储过程的代码

    1  PL SQL  创建一个包 2 PL SQL 存储过程分页第一张图 3 PL SQL 存储过程分页第二张图 4 java 调用存储过程第一张图 5 java 调用存储过程 第二张图

  7. EF调用存储过程实现分页

    1.通用分页代码 public static List<T> SelectPageList<T>(string sqlstr, int pageIndex, int pages ...

  8. 封装EF code first用存储过程的分页方法

    一年半没有做过MVC的项目了,还是很怀念(因为现在项目还是原来的ASPX),个人还是喜欢mvc,最近又开始重拾MVC,感觉既熟悉又陌生. 记录一下封装好的分页代码 首先先说下 我使用EF codefi ...

  9. mysql 高效分页存储过程_mysql分页存储过程

    CREATE PROCEDURE 'sp_page'( in _pagecurrent int,--/*当前页*/ in _pagesize int,--/*每页的记录数*/ in _ifelse v ...

  10. MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)

    事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...

最新文章

  1. 特征值与特征向量的意义
  2. 实至名归!ACM宣布深度学习三巨头共同获得图灵奖
  3. Visual Studio 2022编译x86 或者 win32程序时的错误MSB6006
  4. 【揭秘】Slack:从0到10亿美元的产品是怎样炼成的
  5. 2003白金一代NBA选秀
  6. 全库模式 用户模式 表模式_暗模式,亮模式和用户的故事
  7. python删除指定行_关于csv:删除python中的特定行和对应文件
  8. 小甲鱼 OllyDbg 教程系列 (十一) : inline patch ( 内嵌补丁 )
  9. 隆重推荐一本虚拟化方面的重量级图书
  10. Linux 启动流程即init程序分析--2
  11. ubuntu换系统下载路径源
  12. 基于ssm+vue的综合项目 健康体检管理系统-第十章-权限控制、图形报表
  13. paypal接入指南
  14. Python爬虫——爬取网站的图片
  15. python和mysql匹配吗_python使用mysql
  16. message——UVM
  17. qlv转php,如何将qlv文件转换成mp,qlv文件怎么免费转换为mp4格式
  18. memcached win64位服务端安装和java客户端实例
  19. 两台服务器公用一个显示器,两台服务器链接一台显示器
  20. MATLAB中sin(i)求和

热门文章

  1. ugui unity 取消选择_关于Unity中的UGUI优化,你可能遇到这些问题
  2. python 可视化界面_给大家分享一些实用的Python库
  3. hive一次加载多个文件_0738-6.2.0-如何在Hive中使用多分隔符
  4. 四大开源无人机项目,极客要Get了
  5. 《程序员面试金典》合法括号判断
  6. Python Demo 04-蒙特卡罗猜测与计时
  7. storm metric的使用说明
  8. JVM性能调优中的命令总结
  9. 地理数据库 (geodatabase) 的架构
  10. 图网络中的社群及社群发现算法