自开始做项目以来,一直在用。这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用。 /**//*———————————————- AS BEGIN IF @currPage = 1 — 如果是第一页 ELSE — 其他页 END prcPageResult 1,*,TableName,,CreateDate,1,PkID,25 上面表示,查询表TableName的所有字段,前25条记录,因为是第一页,排序字段为CreateDate,降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中非常的适用。不信您可以试试看,尤其是在百万级数据上,他的优势就显露无疑了,当然,这段代码是可以转换成MySql中的存储过程的,不过,在这里就不给大家了,你们可以自己试着转换看看。 下面的存储过程查询表的记录数: /**//*———————————————-
*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 –分页大小
BEGIN — 存储过程开始
— 该存储过程需要用到的几个变量 http://www.knowsky.com/ —
DECLARE @strTemp varchar(1000)
DECLARE @strSql varchar(4000) –该存储过程最后执行的语句
DECLARE @strOrderType varchar(1000) –排序类型语句 (order by column asc或者order by column desc)
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
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
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
EXEC (@strSql)
END — 存储过程结束
————————————————
GO
调用方法:
*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
sqlserver分页查询通用存储过程_数据库技巧
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » sqlserver分页查询通用存储过程_数据库技巧
相关推荐
-      sql语句中的判断功能的使用方法
-      sql语句中的判断功能的使用方法
-      SQL语言中去掉小数点有效数字后面的所有0
-      ASP连接各种数据库的代码
-      在sql语句中实现md5功能
-      给access数据库减肥
-      asp连接access数据库代码(2)
-      更改 SQL Server 登录模式