复制代码 代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
Create PROCEDURE [dbo].[SP_Pagination]
/**//*
***************************************************************
** 千万数量级分页存储过程 **
***************************************************************
参数说明:
1.Tables :表名称,视图
2.PrimaryKey :主关键字
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
4.CurrentPage :当前页码
5.PageSize :分页尺寸
6.Filter :过滤语句,不带Where
7.Group :Group语句,不带Group By
***************************************************************/
(
@Tables varchar(2000),
@PrimaryKey varchar(500),
@Sort varchar(500) = NULL,
@CurrentPage int = 1,
@PageSize int ,
@Fields varchar(2000) = '*',
@Filter varchar(1000) = NULL,
@Group varchar(1000) = NULL
)
AS
/**//*默认排序*/
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PrimaryKey
DECLARE @SortTable varchar(1000)
DECLARE @SortName varchar(1000)
DECLARE @strSortColumn varchar(1000)
DECLARE @operator char(2)
DECLARE @type varchar(1000)
DECLARE @prec int
/**//*设定排序语句.*/
IF CHARINDEX('DESC',@Sort)>0
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) = 0
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
SET @operator = '>='
END
IF CHARINDEX('.', @strSortColumn) > 0
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
END
ELSE
BEGIN
SET @SortTable = @Tables
SET @SortName = @strSortColumn
END
SELECT @type=t.name, @prec=c.prec
FROM sysobjects o
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype
WHERE o.name = @SortTable AND c.name = @SortName
IF CHARINDEX('char', @type) > 0
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
DECLARE @strPageSize varchar(500)
DECLARE @strStartRow varchar(500)
DECLARE @strFilter varchar(1000)
DECLARE @strSimpleFilter varchar(1000)
DECLARE @strGroup varchar(1000)
/**//*默认当前页*/
IF @CurrentPage < 1
SET @CurrentPage = 1
/**//*设置分页参数.*/
SET @strPageSize = CAST(@PageSize AS varchar(500))
SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(500))
/**//*筛选以及分组语句.*/
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = ''
/**//*执行查询语句*/
EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
'
)
相关推荐:
JavaScript 核心参考教程 内置对象
Mootools 1.2教程 排序类和方法简介
javascript 面向对象,实现namespace,class,继承,重载
ASP Crazy 模版操作类(最简单的模板类、仅提供交流)
VBScript 实现文字遮罩
win2008之IIS7中FTP设置技巧
JQuery 绑定事件时传递参数的实现方法
asp.net网站开发包wq.dll打包下载
xhEditor的异步载入实现代码
js 覆盖和重载 函数
php pack与unpack 摸板字符字符含义
基于jQuery的日期选择控件
常见的数字验证正则表达式整理
js 操作符实例代码
ASP.NET Cookie 操作实现
5款Javascript颜色选择器
MSSQL2005 INSERT,UPDATE,DELETE 之OUTPUT子句使用实例
判断一个表的数据不在另一个表中最优秀方法
php实现网站插件机制的方法
通过身份证号得到出生日期和性别的js代码
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
php程序之die调试法 快速解决错误
asp.net下获取浏览器类型的实现代码
dropdownlist之间的互相联动实现(显示与隐藏)
Flex 画面快照截图及显示实现代码
javascript 图片放大效果函数
11款基于Javascript的文件管理器
Mootools 1.2教程 Tooltips
7个Javascript地图脚本整理
SQL 随机查询 包括(sqlserver,mysql,access等)
sql中all,any,some用法
JavaScript 组件之旅(三):用 Ant 构建组件
JS模拟的QQ面板上的多级可展开的菜单
PHP 面向对象实现代码
PHP 字符截取 解决中文的截取问题,不用mb系列
JavaScript 文本域字体大小选择功能
PHP 压缩文件夹的类代码
JS 连锁泡泡 v1.1
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
jquery 选择器部分整理
JavaScript 利用StringBuffer类提升+=拼接字符串效率
移除HTML标签的正则表达式
服务器升级显优势 掀起企业选购热潮
PPK 谈 JavaScript 的 this 关键字 [翻译]
JS 操作日期 顺便实现 上一周 和 下一周 功能
jQuery 使用手册(五)
Linux 操作系统下Web服务器配置详细介绍
中文域名备受关注 互联网40年最大变革
MySQL 错误处理例子[译]
JQuery与Ajax常用代码实现对比