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. Redis链表相关操作命令

    lists链表类型lists类型就是一个双向链表,通过push,pop操作.从链表的头部或者尾部添加删除元素,这样list即可以作为栈也可以作为队列 lpush key value 在链表key的头部 ...

  2. Linux的文件/目录的权限

    文件类型 权限 属主 属组 目录名/文件名drwx------ 2 alice girls 4096 9月 25 11:33 alicedrwx------ 2 rose girls 4096 9月 ...

  3. iOS开发app上架流程之证书的制作

    1.证书的制作:登陆 https: 1.1appid的注册 选择Identifiers 下的App IDs然后如图所示 点击加号,进入 App ID Description下的Name:这个是appI ...

  4. flask部署 supervisor的使用

    安装supervisor sudo apt-get install supervsor   配置 打开 /etc/supervisor/supervisor.conf 可以看到 同目录文件夹下的 co ...

  5. 一个简单的Servlet工具

    以前老师在项目中用过一个Sevlet的工具,就是在请求Servlet的时候带一个参数,该参数决定要执行Servlet中的方法, public class ServletUtils extends Ht ...

  6. HDU 1264 Counting Squares(模拟)

    题目链接 Problem Description Your input is a series of rectangles, one per line. Each rectangle is speci ...

  7. BestCoder Round #86 A B C

    这次BC终于不像上次一样惨烈 终于A了三题…… 终测ing…… 发一波题解…… A.Price List A题十分无脑 只要把所有数加起来存到sum里 询问的时候大于sum输出1 否则输出0就行了…… ...

  8. 2016NEFU集训第n+5场 A - Chinese Girls' Amusement

    Description       You must have heard that the Chinese culture is quite different from that of Europ ...

  9. 不要在 _ASSERT() 宏中执行功能代码 AND RELEASE版调试办法

            程序在DEBUG版正常运行,在RELEASE版就崩溃了,想调试找问题,却发现RELEASE版根本走不到断点... 需要在工程配置中将 Configuration Properties- ...

  10. HyperSnap(屏幕抓图工具) 8.11.03 官方简体中文特别版

    软件名称:屏幕抓图工具HyperSnap 软件分类:图像捕捉运行环境:WinXP/Win2003/Vista/Win7/Win8/WinALL软件语言:简体中文授权方式:免费软件软件大小:12462K ...