SQL 分页通用存储过程
USE [DB]
GO
/****** Object: StoredProcedure [dbo].[SP_AspNetPager] Script Date: 10/23/2015 16:37:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO ALTER PROCEDURE [dbo].[SP_AspNetPager]
@PageSize INT = , -- 页尺寸
@PageIndex INT = , -- 页码
@TableName VARCHAR() , -- 表名
@KeyFields VARCHAR() = '' , -- 排序的字段名
@ShowFields VARCHAR() = '*' , -- 需要返回的列
@OrderType BIT = , -- 设置排序类型, 非 值则降序
@WhereString VARCHAR() = '', -- 查询条件 (注意: 不要加 where)
@OrderFields VARCHAR()='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC
@RecordCount int OUTPUT --总页数
AS
DECLARE @StrSQL VARCHAR() -- 主语句
DECLARE @StrTmp VARCHAR() -- 临时变量
DECLARE @StrOrder VARCHAR() -- 排序类型 IF @RecordCount IS NULL
BEGIN
DECLARE @sql nvarchar()
SET @sql=N'SELECT @RecordCount=COUNT(*)'
+N' FROM '+@TableName
+N' WHERE '+@WhereString
EXEC sp_executesql @sql,N'@RecordCount int OUTPUT',@RecordCount OUTPUT
end --以上代码的意思是如果@DoCount传递过来的不是0,就执行总数统计。以下的所有代码都是@DoCount为0的情况
IF @OrderType !=
BEGIN
SET @StrTmp = '<(select min'
SET @StrOrder = ' order by [' + @KeyFields + '] desc'
--如果@OrderType不是0,就执行降序,这句很重要!
END
ELSE
BEGIN
SET @StrTmp = '>(select max'
SET @StrOrder = ' order by [' + @KeyFields + '] asc'
END
IF @PageIndex =
BEGIN
IF @WhereString != ''
SET @StrSQL = 'select top ' + STR(@PageSize) + ' '
+ @ShowFields + ' from [' + @TableName
+ '] where ' + @WhereString + ' ' + @StrOrder
ELSE
SET @StrSQL = 'select top ' + STR(@PageSize) + ' '
+ @ShowFields + ' from [' + @TableName + '] '
+ @StrOrder
--如果是第一页就执行以上代码,这样会加快执行速度
END
ELSE
BEGIN
--以下代码赋予了@StrSQL以真正执行的SQL代码
SET @StrSQL = 'select top ' + STR(@PageSize) + ' '
+ @ShowFields + ' from [' + @TableName + '] where ['
+ @KeyFields + ']' + @StrTmp + '([' + @KeyFields
+ ']) from (select top ' + STR(( @PageIndex - )
* @PageSize) + ' ['
+ @KeyFields + '] from [' + @TableName + ']' + @StrOrder
+ ') as tblTmp)' + @StrOrder
IF @WhereString != ''
SET @StrSQL = 'select top ' + STR(@PageSize) + ' '
+ @ShowFields + ' from [' + @TableName
+ '] where [' + @KeyFields + ']' + @StrTmp + '(['
+ @KeyFields + ']) from (select top '
+ STR(( @PageIndex - ) * @PageSize) + ' ['
+ @KeyFields + '] from [' + @TableName + '] where '
+ @WhereString + ' ' + @StrOrder
+ ') as tblTmp) and ' + @WhereString + ' '
+ @StrOrder
END
EXEC (@StrSQL)
SQL 分页通用存储过程的更多相关文章
- 改良版的SQL Service 通用存储过程分页
上次写了通用存储过程.感觉还是有很大的BUG.就是条件不能参数画化.这个BUG可以说是致命的.但是我一直想在用什么方法能解决这个东西.其实我只是想写少量的代码来做更多的事情.我想能不能传集合给存储过程 ...
- 【原创】SQL分页查询存储过程
------------------------------------- -----作者:张欣宇 -----时间:2013-06-28 -----简介:根据参数和条件分页查询 ----------- ...
- SqlServer通用存储过程
1.增删改—通用存储过程 --增删改 存储过程create proc Infos_InsertUpdateDelete( @Id int, @Name varchar(50), @DataTable_ ...
- SQL Server 的通用分页显示存储过程
建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适 ...
- 真正通用的SQL分页存储过程
关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加 ...
- SQL Server 的通用分页显示存储过程(转载)
http://database.51cto.com/art/200512/12923.htm 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是: ...
- Sql Server通用分页存储过程
Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 ...
- [转]关于SQL分页存储过程的分析
[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...
- 关于SQL分页存储过程的分析
建 立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅 ...
随机推荐
- 使用javaScript和JQuery制作经典面试题:光棒效果
使用javaScript与jQuery添加CSS样式的区别和步骤 使用javaScript制作光棒效果 --首先是javaScript <script> $(function () { v ...
- CentOS7搭建 Hadoop + HBase + Zookeeper集群
摘要: 本文主要介绍搭建Hadoop.HBase.Zookeeper集群环境的搭建 一.基础环境准备 1.下载安装包(均使用当前最新的稳定版本,截止至2017年05月24日) 1)jdk-8u131 ...
- Codeforces Round #332 (Div. 2)B. Spongebob and Joke
B. Spongebob and Joke time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- UVA10766:Organising the Organisation(生成树计数)
Organising the Organisation 题目链接:https://vjudge.net/problem/UVA-10766 Description: I am the chief of ...
- 不要在linux上启用net.ipv4.tcp_tw_recycle参数
不要在linux上启用net.ipv4.tcp_tw_recycle参数 发布于 2015/07/27 莿鸟栖草堂 本文为翻译英文BLOG<Coping with the TCP TIME-WA ...
- 不可不知的robots.txt文件
robots.txt基本介绍 robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容. 当一个搜索机器人(有的叫搜索 ...
- hdu 4408 Minimum Spanning Tree
Problem Description XXX is very interested in algorithm. After learning the Prim algorithm and Krusk ...
- UIAlertView---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 UIAlertView //转载请注明出处--本文永久链接:http://ww ...
- HDU 1574 RP问题 (dp)
题目链接 Problem Description 在人类社会中,任何个体都具有人品,人品有各种不同的形式,可以从一种形式转换为另一种形式,从一个个体传递给另一个个体,在转换和传递的过程中,人品不会消失 ...
- TDD随想录
TDD随想录 谨以本文献给TDD的开创者与传播者 本文纯属个人经历,如有雷同纯属巧合 我从不觉得自己是一个好的程序员,甚至可能连合格都谈不上,不过在内心深处我却渴望着在编程这件事上获得成功. 可惜每次 ...