实现千万级数据的分页的通用存储过程
类型:滤镜插件大小:3.7M语言:英文评分:5.0标签:立即下载01将ANSI_NULLS设置为开
02将报价标识符设置为开
去吧
04
05 /*
06 功能描述:通用分页显示查询
07 如果有自增标识字段,在@strGetFields中不要加入此字段信息,
08 如果非要加入的话,要(fldName 0)作为fldName这样处理;
09 输入参数:
10 @tblName:表名
11 @ strGetFields:需要返回的列'*':返回所以列信息
12 @PageSize:页尺寸
13 @PageIndex:页码
14 @ doCount:返回记录总数,非0 值则返回
15 @ strOrderBy:排序字段信息,(注意: 不要加订单方)
16 格式: desc油田1,美国石油学会油田2
17 @strWhere:查询条件,(注意: 不要加哪里)
18输出参数:@RecordCount:记录总数
19 作者:Nestcn
20 创建时间: 2010-03-09
21 更改纪录:
22 */
23 ALTER PROJECt[dbo].[我的分页]
24 (
25 @tblName varchar(255),
26 @ StrgetFields varchar(1000)=' * ',
27 @PageSize int=10,
28 @PageIndex int=1,
29 @doCount位=0,
30 @strOrderBy varchar(500)=' ',
31 @strWhere varchar(1500)=' ',
32 @RecordCount int输出
33 )
34自动化系统
35 - 主语句
36 DECLARE @ STrsql varchar(5000)SET @ STrsql=' '
37 - 排序变量
38 DECLARE @ strOrder varchar(400)SET @ strOrder=' '
39
40 SET @RecordCount=0
41 - 如果@doCount传递过来的不是0,就执行总数统计
42 IF (@doCount!=0)
43 BEGIN
44 DECLARE @sWhere varchar(2000)
45
46 SET @sWhere=' '
47 IF (@strWhere!='')
48 SET @sWhere=' WHERE ' @strWhere
49
50 SET @strSQL='如果存在(从dbo.sysobjects中选择*其中id=object _ id('[dbo]).[tmpTable]' ')和OBJECTPROPERTY(id,' ' IsUserTable'')=1)
51 SET @ strSQL=@ strSQL ' UPDATE tmpTable SET Total=(SELECT COUNT(*)FROM[' @ tblName ']' @ sWhere ')
52 SET @ strSQL=@ strSQL ' ELSE SELECT COUNT(*)AS Total INTO tmpTable FROM[' @ tblName ']' @ sWhere
53
54 EXEC (@strSQL)
55
56 SELECT @ RecordCount=合计自表
57
58 - 删除总数统计临时表
59 EXEC ('DROP TABLE tmpTable ')
60 END
61
62 PRINT @RecordCount
63
64 - 排序字段信息
65 IF (@strOrderBy!='')
66 SET @ strOrder=' ORDER BY ' @ strOrder BY
67 - 如果是第一页就执行以上代码,这样会加快执行速度
68中频(@页面索引=1)
69 BEGIN
70 IF (@strWhere!='')
71 SET @ strSQL=' SELECT TOP ' str(@ page size)' ' @ strGetFields ' FROM[' @ tblName ']WHERE ' @ strWhere @ strOrder
72 ELSE
73 SET @ strSQL=' SELECT TOP ' str(@ page size)' ' @ strGetFields ' FROM[' @ tblName ']' @ strOrder
74 END
75 ELSE
76 BEGIN
77 - 为搜索表建立自动编号保存到临时表中
78 SET @ strSQL=' SELECT TOP ' str(@ page index * @ page size)' IDENTITY(int,1,1) AS IID,' @ strGetFields ' INTO # tmpTable FROM[' @ tblName ']'
79 IF (@strWhere!='')
80 SET @ strSQL=@ strSQL ' WHERE ' @ strWhere @ strOrder
81 ELSE
82 SET @strSQL=@strSQL @strOrder
83
84 - 以下代码赋予了@strSQL以真正执行的结构化查询语言代码
85 SET @ strSQL=@ strSQL ' SELECT ' @ strGetFields ' FROM # tmpTable WHERE IID ' str(@ page index-1)* @ page size)' DROP TABLE # tmpTable '
86 END
87
88 PRINT @strSQL
89
90 - 执行分页查询
91 EXEC (@strSQL)
版权声明:实现千万级数据的分页的通用存储过程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。