All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
VS2008的Linq,更新数据就那么费劲?_.net资料_编程技术
ASP.NET防止SQL注入攻击常用方法_[Asp.Net教程]
生成bmp格式的图片(imagebmp)_php资料_编程技术
Visual C++ 6.0教程:函数重载概述
SQL操作全集(部分是Mssql语句,不在access中使用)_[SQL Server教程]
在使用ASP.NET网站管理工具出现“遇到错误。请返回上一页并重试。”的解决办法!_[Asp.Net教程]
SQL,server,2005的简单分页程序_[SQL,Server教程]
.Net组件开发介绍,开发ajax控件_.net资料_编程技术
Asp.net动态生成页面控件的办法_[Asp.Net教程]
js判断时间格式是否有效!_JavaScript技术_编程技术
Reading number is top 10 pictures
Kim jong il's mistress, national beauty JinYuJi actor1
Female model behind the bitterness, often being overcharged3
Female model behind the bitterness, often being overcharged4
A man's favorite things1
女人化妆前后的对比
007 James. bond's new lover
Chinese paper-cut grilles art appreciation6
美女浴室写真2
囚犯暴乱了咋办?
Sora aoi mirror memorial classics1
Download software ranking
小黑猫大战两米大花蛇
Photoshop 8.0图象编辑软件
Prostitutes diary
Boxer vs Yellow5
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
好色的外科大夫
虚拟机5.5.3版
致我们终将逝去的青春
WebService在.NET中的实战应用教学视频 → 第4集
Eclipse 4.2.2 For Win64
归海一刀 published in(发表于) 2014/2/3 6:39:06 Edit(编辑)
SQLServer分页查询通用存储过程_[SQL Server教程]

SQLServer分页查询通用存储过程_[SQL Server教程]

SQLServer分页查询通用存储过程_[SQL Server教程]

自开始做项目以来,一直在用。这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用。


/**//*----------------------------------------------
*procedure name : prcPageResult
* author : FuChun
* create date : 2006-10-04
*/
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 -- 存储过程结束
------------------------------------------------
GO
调用方法:


prcPageResult 1,'*','TableName','','CreateDate',1,'PkID',25


上面表示,查询表TableName的所有字段,前25条记录,因为是第一页,排序字段为CreateDate,降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中非常的适用。不信您可以试试看,尤其是在百万级数据上,他的优势就显露无疑了,当然,这段代码是可以转换成MySql中的存储过程的,不过,在这里就不给大家了,你们可以自己试着转换看看。


下面的存储过程查询表的记录数:


/**//*----------------------------------------------
*procedure name : prcRowsCount
* author : FuChun
* create date : 2006-09-22
*/
CREATE PROC prcRowsCount
@tabName varchar(200), --需要查询的表名
@colName varchar(200)='*', --需要查询的列名
@condition varchar(200)='' --查询条件
AS
BEGIN
DECLARE @strSql varchar(255)
IF @condition = ''
SET @strSql='select count('+@colName+') from '+@tabName
ELSE
SET @strSql='select count('+@colName+') from '+@tabName+' where '+@condition
EXEC (@strSql)
END
------------------------------------------------
GO
还有删除记录的通用存储过程和查询单条记录的通用存储过程在这里就不奉送了,感谢提供原通用分页查询存储过程的哥们,谢谢。


来源:http://blog.csdn.net/fcrpg2005/archive/2007/02/22/1512707.aspx







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.