CREATE PROCEDURE prcPageResult -- 获得某一页的数据 --
@currPage INT = 1 , --当前页页码 (即Top currPage)
@showColumn VARCHAR(2000) = '*' , --需要得到的字段 (即 column1,column2,......)
@tabName VARCHAR(2000) , --需要查看的表名 (即 from table_name)
@strCondition VARCHAR(2000) = '' , --查询条件 (即 where condition......) 不用加where关键字
@ascColumn VARCHAR(100) = '' , --排序的字段名 (即 order by column asc/desc)
@bitOrderType BIT = 0 , --排序的类型 (0为升序,1为降序)
@pkColumn VARCHAR(50) = '' , --主键名称
@pageSize INT = 20 --分页大小
AS
BEGIN -- 存储过程开始 -- 该存储过程需要用到的几个变量 --
DECLARE @strTemp VARCHAR(1000)
DECLARE @strSql VARCHAR(4000) --该存储过程最后执行的语句
DECLARE @strOrderType VARCHAR(1000) --排序类型语句 (order by column asc或者order by column desc)
BEGIN
IF @bitOrderType = 1 -- bitOrderType=1即执行降序
BEGIN
SET @strOrderType = ' ORDER BY ' + @ascColumn + ' DESC'
SET @strTemp = '<(SELECT min'
END
ELSE
BEGIN
SET @strOrderType = ' ORDER BY ' + @ascColumn + ' ASC'
SET @strTemp = '>(SELECT max'
END
IF @currPage = 1 -- 如果是第一页
BEGIN
IF @strCondition != ''
SET @strSql = 'SELECT TOP ' + STR(@pageSize) + ' '
+ @showColumn + ' FROM ' + @tabName + ' WHERE '
+ @strCondition + @strOrderType
ELSE
SET @strSql = 'SELECT TOP ' + STR(@pageSize) + ' '
+ @showColumn + ' FROM ' + @tabName
+ @strOrderType

END
ELSE -- 其他页
BEGIN

IF @strCondition != ''
SET @strSql = 'SELECT TOP ' + STR(@pageSize) + ' '
+ @showColumn + ' FROM ' + @tabName + ' WHERE '
+ @strCondition + ' AND ' + @pkColumn + @strTemp
+ '(' + @pkColumn + ')' + ' FROM (SELECT TOP '
+ STR(( @currPage - 1 ) * @pageSize) + ' '
+ @pkColumn + ' FROM ' + @tabName + @strOrderType
+ ') AS TabTemp)' + @strOrderType
ELSE
SET @strSql = 'SELECT TOP ' + STR(@pageSize) + ' '
+ @showColumn + ' FROM ' + @tabName + ' WHERE '
+ @pkColumn + @strTemp + '(' + @pkColumn + ')'
+ ' FROM (SELECT TOP ' + STR(( @currPage - 1 )
* @pageSize) + ' '
+ @pkColumn + ' FROM ' + @tabName + @strOrderType
+ ') AS TabTemp)' + @strOrderType
END
END
EXEC (@strSql)
END

EXEC prcPageResult 2,'*','outpr_register','state=1','inputtime',1,'registerid',3

SQL Server 存储过程进行分页查询的更多相关文章

  1. 最通用的ibatis.Net使用sql server存储过程返回分页数据的详细例子

    ibatis.Net是一个比较简单和灵活的ORM框架,今天我分享一个我的项目中使用sql server通用存储过程来分页的一个例子,用ibatis.Net框架统一返回分页数据为IList<Has ...

  2. Sql Server 存储过程中查询数据无法使用 Union(All)

    原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...

  3. 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期

    腾讯云图片鉴黄集成到C#   官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...

  4. 初识 Sql Server存储过程

    开篇语 之前的公司并未使用存储过程来做项目,所以小生对存储过程的调用.使用也是一知半解,刚好这家公司就大量用到了存储过程 这次做的功能,为了保持风格一致,也是需要使用存储过程来实现动态sql和数据分页 ...

  5. SQL Server 存储过程(转载)

    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...

  6. (摘录)SQL Server 存储过程

    文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...

  7. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  8. 在SQL Server 2016里使用查询存储进行性能调优

    作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在 ...

  9. Sql Server来龙去脉系列之三 查询过程跟踪

    我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...

随机推荐

  1. Zend Studio 无法打开的解决办法

    今天郁闷的...正在写代码,突然 computer 嗝屁了,断电后自动重启了一次,开机后就悲剧了,Zend Studio 9 无法打开了,每次运行只弹窗个 请查看项目错误日志的提示 然后就没反应了.. ...

  2. wangEditor的jQuery插件化

    wangEditor是一款优秀的Web富文本编辑器.这篇随笔中讲述的wangEditor版本是2.1.22,由于它依赖于jQuery(作者打算在第三版中取消对jQuery的依赖),那么如果能使用$(& ...

  3. HDU 1241Oil Deposits (DFS)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  4. /tmp 和 /var/tmp 的区别

    /tmp is meant as fast (possibly small) storage with a short time to live (TTL). Many systems clean / ...

  5. aws部署从无到有(二)windows管理aws

    1 AMI正常启动后会进入下面页面 2 远程链接点击如何连接至您的 Linux 实例进入下载页 Windows下使用 PuTTY连接到 Linux 实例 http://www.chiark.green ...

  6. Linux入门(二)Linux基本命令及基本操作

    1 常用Linux命令 图形界面进入到字符界面: ctrl+alt+F2~F6 字符界面进入到图形界面:ctrl +alt+F7 查看本机ip:  ifconfig  (windows是:ipconf ...

  7. Java Object 对象拷贝答疑

    Java Object 对象拷贝答疑 @author ixenos 摘要:在对象的clone过程需要注意的几点.关于关键字this.super 关于clone[对象拷贝] 在实际编程过程,有时候我们会 ...

  8. OpenCV2.x自学笔记——形态学运算

    名称 标识符 作用 原理 腐蚀 MORPH_ERODE 膨胀 MORPH_DILATE 开运算 MORPH_OPEN 消除细白点 先腐蚀后膨胀 闭运算 MORPH_CLOSE 消除小黑洞 先膨胀后腐蚀 ...

  9. Ambari删除服务

    ambari-cassandra-service上面推荐的方法: curl -u admin:$PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{ ...

  10. ActiveMQ in Action(5) - Clustering

    关键字: activemq 2.5 Clustering    ActiveMQ从多种不同的方面提供了集群的支持.2.5.1 Queue consumer clusters    ActiveMQ支持 ...