< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

-- 获取指定页的数据
CREATE PROCEDURE spPagination
@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 "
     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) +" "+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder
        else
         set @strSQL = "select top " + str(@PageSize) +" "+ " from ["+ @tblName + "] "+ @strOrder
         --如果是第一页就执行以上代码,这样会加快执行速度
       end
      else
       begin
        --以下代码赋予了@strSQL以真正执行的SQL代码
        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
end
end

exec (@strSQL)
GO

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2007/06/30/2912349.html  ,如需转载请自行联系原作者

通用分页存储过程(sqlserver)相关推荐

  1. 高性能SQLServer通用分页存储过程

    这是我之前整理的高性能SQLServer 通用分页存储过程,测试性能还不错,特此分享出来,如果有人能更好地优化,请留言,谢谢! SQL代码  1 USE [数据库名称]  2 GO  3 /***** ...

  2. SQL SERVER 通用分页存储过程

    SQL SERVER 通用分页存储过程 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和page ...

  3. 通用分页存储过程(转自邹建)

    --TOP n 实现的通用分页存储过程(转自邹建) CREATE PROC sp_PageView @tbname     sysname,               --要分页显示的表名 @Fie ...

  4. Sql Server通用分页存储过程

    sql server2000分页方式很多,效率吗  当到达10万级以上就有些吃力了,这里暂时不例出来了 sql server2005以上就有了row_number 也是一大进步,详情如下参考 Sql ...

  5. 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程

    通用分页存储过程很实用,但毕竟不是全适用于一些环境,譬如我遇到过一种情况,需要先外链两个表,然后再关联几个表,总之参数传递很烦人,这里不细说了,现在只谈实现查询后,怎么分页的简单技巧 1,建立用户函数 ...

  6. 支持DISTINCT的通用分页存储过程(SQL2005)

    /****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...

  7. sql2005通用分页存储过程

    set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go /****** Object: Stored Procedure dbo.p_commonList **** ...

  8. 【转】通用sqlserver分页存储过程

    单主键: CREATE PROC P_viewPage     /**//*         nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7  QQ:348 ...

  9. 通用sqlserver分页存储过程

    单主键: CREATE PROC P_viewPage/**//*nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7 QQ:34813284敬告:适用于单一主键 ...

最新文章

  1. js手机键盘遮挡_完美解决手机网页中输入框被输入法遮挡的问题
  2. AI杀入斗地主领域,快手开发DouZero对标AlphaZero,干掉344个AI获第一
  3. iOS与Opencv的探秘之Opencv认识,适配Xcode
  4. ie6常见css bug
  5. ue4 怎么修改骨骼动画_【UE4】动画重定向
  6. vr设备应用程序_在15分钟内构建一个VR Web应用程序
  7. c语言爬虫和python爬虫_为什么写爬虫都喜欢用python?
  8. mysql 8安装 windows xp_postgreSQL[Windows XP]安装问题解决方案:
  9. aix 文件升级-替换
  10. Vue.js 判断对象属性是否存,不存在添加
  11. OpenMAX IL介绍与其体系
  12. APP架子迁移指南(一)
  13. 递归算法—输入字母逆序输出汉诺塔递归算法
  14. OpenCV中文官方文档-分享
  15. 美菜半年退出数百个县城,开始往盈利迈进
  16. EOSIO流服务Dfuse
  17. 码蹄集 - MT2165 - 小码哥的抽卡之旅1
  18. 微信公众号--授权相关
  19. 如何绘制用户体验地图
  20. 银行放贷冲动不强:7折房贷利率料最早明年现身

热门文章

  1. C++类中不能定义自身类类型成员变量
  2. Python列表的切片
  3. linux 命令 mv 自己的理解
  4. struts2.2.1.1 类型转换问题 (传递Date类型参数)
  5. Hibernate的拦截器和监听器 .
  6. Spring MVC的表单控制器——SimpleFormController .
  7. 分布式项目 cookie共享方案
  8. Java 将字符串转换为字符数组 toCharArray()
  9. Sublime Text3 配置设置攻略
  10. UVA - 10118 Free Candies 记忆化搜索经典