SQL Server 存储过程进行分页查询
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 存储过程进行分页查询的更多相关文章
- 最通用的ibatis.Net使用sql server存储过程返回分页数据的详细例子
ibatis.Net是一个比较简单和灵活的ORM框架,今天我分享一个我的项目中使用sql server通用存储过程来分页的一个例子,用ibatis.Net框架统一返回分页数据为IList<Has ...
- Sql Server 存储过程中查询数据无法使用 Union(All)
原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...
- 腾讯云图片鉴黄集成到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 ...
- 初识 Sql Server存储过程
开篇语 之前的公司并未使用存储过程来做项目,所以小生对存储过程的调用.使用也是一知半解,刚好这家公司就大量用到了存储过程 这次做的功能,为了保持风格一致,也是需要使用存储过程来实现动态sql和数据分页 ...
- SQL Server 存储过程(转载)
SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...
- (摘录)SQL Server 存储过程
文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 在SQL Server 2016里使用查询存储进行性能调优
作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在 ...
- Sql Server来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
随机推荐
- C++线程安全的单例模式
1.在GCC4.0之后的环境下: #include <iostream> using namespace std;template <typename T>class Sing ...
- Android;设置TextView加粗 代码设置
我用过paint的那种方式,不好使. private void setTextBold(TextView textView) { //android中为textview动态设置字体为粗体 textVi ...
- android 知识点
版本更新 数据库Relam 图片加载库 视频bilibili 幻灯片 网络请求框架 内存检测工具 内存优化总结 压缩包下载并且解压 新闻资讯导航 联系人 滑动退出activity mvp框架 加载进度 ...
- JavaScript 运动框架 Step by step(转)
1,运动原理 Js运动,本质来说,就是让 web 上 DOM 元素动起来.而想要 DOM 动起来,改变其自身的位置属性,比如高宽,左边距,上边距,透明度等.动画的原理就是把不同状态的物体,串成连续的样 ...
- Sass与Compress实战:第二章
1.使用变量 Sass使用$符号来标识变量,比如$highlight-color. 1.1声明变量 Sass声明变量和CSS声明属性很像: $highlight-color : #abcdef; 这意 ...
- GlusterFS无法启动原因及处理方案
启动结果: Redirecting to /bin/systemctl status glusterd.serviceglusterd.service - GlusterFS, a clustere ...
- 8.多线程和Socket通信
一.多线程 1.进程的概念: 进程就是应用程序的执行实例,有独立的内存空间和系统资源.当一个应用程序没有执行的时候,它就不是一个进程. 2.进行的特征: (1)动态性:动态产生动态消亡. (2)并 ...
- [转]整理jquery使用好习惯
1.选择器Selector的使用 1)使用id定位性能最好 1.$("#id") 2)使用标签名定位,性能其次 1.$("p"),$("div ...
- C语言 - 大小端问题
目前使用的机器都是使用字节BYTE来存储的. 对于跨越多字节的对象,必须搞清楚两个规则: 这个对象的地址是什么 在存储器中如何按照这些字节的存放的书序 对于一个整型对象 a=0x12345678,一共 ...
- CevaEclipse - 常用设置
1. 往工程里面添加在硬盘上已有的文件 File -> Import.. -> General -> File System From directory Browse... 勾选需 ...