通用分页存储过程(sqlserver)
-- 获取指定页的数据
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)相关推荐
- 高性能SQLServer通用分页存储过程
这是我之前整理的高性能SQLServer 通用分页存储过程,测试性能还不错,特此分享出来,如果有人能更好地优化,请留言,谢谢! SQL代码 1 USE [数据库名称] 2 GO 3 /***** ...
- SQL SERVER 通用分页存储过程
SQL SERVER 通用分页存储过程 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和page ...
- 通用分页存储过程(转自邹建)
--TOP n 实现的通用分页存储过程(转自邹建) CREATE PROC sp_PageView @tbname sysname, --要分页显示的表名 @Fie ...
- Sql Server通用分页存储过程
sql server2000分页方式很多,效率吗 当到达10万级以上就有些吃力了,这里暂时不例出来了 sql server2005以上就有了row_number 也是一大进步,详情如下参考 Sql ...
- 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程
通用分页存储过程很实用,但毕竟不是全适用于一些环境,譬如我遇到过一种情况,需要先外链两个表,然后再关联几个表,总之参数传递很烦人,这里不细说了,现在只谈实现查询后,怎么分页的简单技巧 1,建立用户函数 ...
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- sql2005通用分页存储过程
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go /****** Object: Stored Procedure dbo.p_commonList **** ...
- 【转】通用sqlserver分页存储过程
单主键: CREATE PROC P_viewPage /**//* nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7 QQ:348 ...
- 通用sqlserver分页存储过程
单主键: CREATE PROC P_viewPage/**//*nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7 QQ:34813284敬告:适用于单一主键 ...
最新文章
- js手机键盘遮挡_完美解决手机网页中输入框被输入法遮挡的问题
- AI杀入斗地主领域,快手开发DouZero对标AlphaZero,干掉344个AI获第一
- iOS与Opencv的探秘之Opencv认识,适配Xcode
- ie6常见css bug
- ue4 怎么修改骨骼动画_【UE4】动画重定向
- vr设备应用程序_在15分钟内构建一个VR Web应用程序
- c语言爬虫和python爬虫_为什么写爬虫都喜欢用python?
- mysql 8安装 windows xp_postgreSQL[Windows XP]安装问题解决方案:
- aix 文件升级-替换
- Vue.js 判断对象属性是否存,不存在添加
- OpenMAX IL介绍与其体系
- APP架子迁移指南(一)
- 递归算法—输入字母逆序输出汉诺塔递归算法
- OpenCV中文官方文档-分享
- 美菜半年退出数百个县城,开始往盈利迈进
- EOSIO流服务Dfuse
- 码蹄集 - MT2165 - 小码哥的抽卡之旅1
- 微信公众号--授权相关
- 如何绘制用户体验地图
- 银行放贷冲动不强:7折房贷利率料最早明年现身
热门文章
- C++类中不能定义自身类类型成员变量
- Python列表的切片
- linux 命令 mv 自己的理解
- struts2.2.1.1 类型转换问题 (传递Date类型参数)
- Hibernate的拦截器和监听器 .
- Spring MVC的表单控制器——SimpleFormController .
- 分布式项目 cookie共享方案
- Java 将字符串转换为字符数组 toCharArray()
- Sublime Text3 配置设置攻略
- UVA - 10118 Free Candies 记忆化搜索经典