set
ANSI_NULLS
ON
set
QUOTED_IDENTIFIER
ON
go
/*
功能描述: 通用分页显示查询
如果有自增标识字段,在@strGetFields中不要加入此字段信息,
如果非要加入的话,要 (fldName + 0) AS fldName 这样处理;
输入参数:
@tblName: 表名
@strGetFields: 需要返回的列 '*':返回所以列信息
@PageSize: 页尺寸
@PageIndex: 页码
@doCount: 返回记录总数, 非 0 值则返回
@strOrderBy: 排序字段信息,(注意: 不要加 ORDER BY)
格式: Field1 DESC, Field2 ASC
@strWhere: 查询条件,(注意: 不要加 WHERE)
输出参数: @RecordCount: 记录总数
作 者: Nestcn
创建时间: 2010-03-09
更改纪录:
*/
ALTER
PROCEDURE
[
dbo
]
.
[
MyPagination
]
(
@tblName
varchar
(
255
),
@strGetFields
varchar
(
1000
)
=
'
*
'
,
@PageSize
int
=
10
,
@PageIndex
int
=
1
,
@doCount
bit
=
0
,
@strOrderBy
varchar
(
500
)
=
''
,
@strWhere
varchar
(
1500
)
=
''
,
@RecordCount
int
output
)
AS
--
主语句
DECLARE
@strSQL
varchar
(
5000
)
SET
@strSQL
=
''
--
排序变量
DECLARE
@strOrder
varchar
(
400
)
SET
@strOrder
=
''
SET
@RecordCount
=
0
--
如果@doCount传递过来的不是0,就执行总数统计
IF
(
@doCount
!=
0
)
BEGIN
DECLARE
@sWhere
varchar
(
2000
)
SET
@sWhere
=
''
IF
(
@strWhere
!=
''
)
SET
@sWhere
=
'
WHERE
'
+
@strWhere
SET
@strSQL
=
'
if exists (select * from dbo.sysobjects where id = object_id(
''
[dbo].[tmpTable]
''
) and OBJECTPROPERTY(id,
''
IsUserTable
''
) = 1)
'
SET
@strSQL
=
@strSQL
+
'
UPDATE tmpTable SET Total = (SELECT COUNT(*) FROM [
'
+
@tblName
+
'
]
'
+
@sWhere
+
'
)
'
SET
@strSQL
=
@strSQL
+
'
ELSE SELECT COUNT(*) AS Total INTO tmpTable FROM [
'
+
@tblName
+
'
]
'
+
@sWhere
EXEC
(
@strSQL
)
SELECT
@RecordCount
=
Total
FROM
tmpTable
--
删除总数统计临时表
EXEC
(
'
DROP TABLE tmpTable
'
)
END
PRINT
@RecordCount
--
排序字段信息
IF
(
@strOrderBy
!=
''
)
SET
@strOrder
=
'
ORDER BY
'
+
@strOrderBy
--
如果是第一页就执行以上代码,这样会加快执行速度
IF
(
@PageIndex
=
1
)
BEGIN
IF
(
@strWhere
!=
''
)
SET
@strSQL
=
'
SELECT TOP
'
+
str
(
@PageSize
)
+
'
'
+
@strGetFields
+
'
FROM [
'
+
@tblName
+
'
] WHERE
'
+
@strWhere
+
@strOrder
ELSE
SET
@strSQL
=
'
SELECT TOP
'
+
str
(
@PageSize
)
+
'
'
+
@strGetFields
+
'
FROM [
'
+
@tblName
+
'
]
'
+
@strOrder
END
ELSE
BEGIN
--
为搜索表建立自动编号 保存到临时表中
SET
@strSQL
=
'
SELECT TOP
'
+
str
(
@PageIndex
*
@PageSize
)
+
'
IDENTITY(int,1,1) AS IID,
'
+
@strGetFields
+
'
INTO #tmpTable FROM [
'
+
@tblName
+
'
]
'
IF
(
@strWhere
!=
''
)
SET
@strSQL
=
@strSQL
+
'
WHERE
'
+
@strWhere
+
@strOrder
ELSE
SET
@strSQL
=
@strSQL
+
@strOrder
--
以下代码赋予了@strSQL以真正执行的SQL代码
SET
@strSQL
=
@strSQL
+
'
SELECT
'
+
@strGetFields
+
'
FROM #tmpTable WHERE IID >
'
+
str
((
@PageIndex
-
1
)
*
@PageSize
)
+
'
DROP TABLE #tmpTable
'
END
PRINT
@strSQL
--
执行分页查询
EXEC
(
@strSQL
)
分享到:
相关推荐
四、该代码只演示pb+ws的简单实现,包含带检索参数时的通用函数编写,具体用于商业时还有很多可以优化的地方,不在本程序讨论范畴; pb8版权所有,QQ:10308237,呵呵,转摘时记得不要把pb8的信息kill掉就好了;
Eclipse中用SWT和JFace开发入门-转摘 .doc
转摘:Microsoft Office Access(前名 Microsoft Access)是由微软发布的关联式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office的成员之一。 Access能够...
公司控制权之争及公司股权设计模式转摘.doc
新零售时代,小卖家如何迅速做出销量(转摘).zip
完全平方公式变形的应用练习题_2(转摘).doc
新零售时代,小卖家如何迅速做出销量(转摘).doc
新零售时代,小卖家如何迅速做出销量(转摘)-知识杂货店.doc
此种共享,不同于一般的内容转摘,而是在对方网站上显示来自另一方网站的文章标题和URL,访问者点击标题就直接进入来源网站进行阅读。因此对内容输出方来说,实现了同一内容多个发布平台,犹如在对方网站做文字链...
华为从事通信网络技术与产品的研究、开发、生产与销售,是中国电信市场的主要供应商之一,并已成功进入全球电信市场。每年华为都要在各大高校招聘大批的应界生,特别是华中科技大学。 下面据说是华为公司的笔试题...
DataFactory 是一种快度的,易于产生测试数据的带有直觉用户接口的工具,它能建模复杂数据关系。在当今快速的开发环境中,应用程序的测试总是处于次要地位。DataFactory是一种强的的数据产生器,它允许开发人员和QA...
这个是我从网上找到的资料,现在共享给大家,希望能帮助到大家。
但到了Vista系统和现下的win7系统时,这个问题就变得非常简单了,可以在磁盘管理中任意操作分区、合区的应用,而且十分安全,根本不用做数据的备份。记得前几年还是XP系统时,用PQ分区失败,丢掉了全部数据,十分...
本文为转摘!!!!!!!!!!
memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是danga.com的一个项目,最早是...
关于人脸检测的open cv实现,期刊转摘
在不打开串口的情况下监视串口的数据,属于转摘
转摘前言:逆变器就是将低压直流电转变成为工频交流电的装置。许多场合需要用到 逆变器,比如:汽车中的电源是由蓄电池提供的12V 或者24V 直流电,如果要在汽车中使用 电视、冰箱等普通家用电器,就要逆变器;在...
1. AJAX介绍 AJAX是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接受数据的技术。 2. AJAX实例 AJAX可以用来创建更多交互式...原文版权归作者所有,如有转摘请注明原作者以及编辑者信息
很多可能在转摘过程中失真或未经验证就被转摘,真正使用时却不行,也由此决定自己全方位试验一下,努力还是没有白费,虽然最终得出的结果是很简单的,但其过程对于一个新学AJAX的人来说,真是挺累。欢迎您在使用过程...