zoukankan
html css js c++ java
sql存储过程分页
[
分享
]
千万数量级分页存储过程(带效果演示)
3
4
CREATE
PROCEDURE
CN5135_SP_Pagination
5
/**/
/*
6 ***************************************************************
7 ** 千万数量级分页存储过程 **
8 ***************************************************************
9 参数说明:
10 1.Tables :表名称,视图
11 2.PrimaryKey :主关键字
12 3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
13 4.CurrentPage :当前页码
14 5.PageSize :分页尺寸
15 6.Filter :过滤语句,不带Where
16 7.Group :Group语句,不带Group By
17 效果演示:http://www.cn5135.com/_App/Opportunities/QueryResult.aspx
18 **************************************************************
*/
19
(
20
@Tables
varchar
(
1000
),
21
@PrimaryKey
varchar
(
100
),
22
@Sort
varchar
(
200
)
=
NULL
,
23
@CurrentPage
int
=
1
,
24
@PageSize
int
=
10
,
25
@Fields
varchar
(
1000
)
=
'
*
'
,
26
@Filter
varchar
(
1000
)
=
NULL
,
27
@Group
varchar
(
1000
)
=
NULL
28
)
29
AS
30
/**/
/*
默认排序
*/
31
IF
@Sort
IS
NULL
OR
@Sort
=
''
32
SET
@Sort
=
@PrimaryKey
33
DECLARE
@SortTable
varchar
(
100
)
34
DECLARE
@SortName
varchar
(
100
)
35
DECLARE
@strSortColumn
varchar
(
200
)
36
DECLARE
@operator
char
(
2
)
37
DECLARE
@type
varchar
(
100
)
38
DECLARE
@prec
int
39
/**/
/*
设定排序语句.
*/
40
IF
CHARINDEX
(
'
DESC
'
,
@Sort
)
>
0
41
BEGIN
42
SET
@strSortColumn
=
REPLACE
(
@Sort
,
'
DESC
'
,
''
)
43
SET
@operator
=
'
<=
'
44
END
45
ELSE
46
BEGIN
47
IF
CHARINDEX
(
'
ASC
'
,
@Sort
)
=
0
48
SET
@strSortColumn
=
REPLACE
(
@Sort
,
'
ASC
'
,
''
)
49
SET
@operator
=
'
>=
'
50
END
51
IF
CHARINDEX
(
'
.
'
,
@strSortColumn
)
>
0
52
BEGIN
53
SET
@SortTable
=
SUBSTRING
(
@strSortColumn
,
0
,
CHARINDEX
(
'
.
'
,
@strSortColumn
))
54
SET
@SortName
=
SUBSTRING
(
@strSortColumn
,
CHARINDEX
(
'
.
'
,
@strSortColumn
)
+
1
,
LEN
(
@strSortColumn
))
55
END
56
ELSE
57
BEGIN
58
SET
@SortTable
=
@Tables
59
SET
@SortName
=
@strSortColumn
60
END
61
SELECT
@type
=
t.name,
@prec
=
c.prec
62
FROM
sysobjects o
63
JOIN
syscolumns c
on
o.id
=
c.id
64
JOIN
systypes t
on
c.xusertype
=
t.xusertype
65
WHERE
o.name
=
@SortTable
AND
c.name
=
@SortName
66
IF
CHARINDEX
(
'
char
'
,
@type
)
>
0
67
SET
@type
=
@type
+
'
(
'
+
CAST
(
@prec
AS
varchar
)
+
'
)
'
68
DECLARE
@strPageSize
varchar
(
50
)
69
DECLARE
@strStartRow
varchar
(
50
)
70
DECLARE
@strFilter
varchar
(
1000
)
71
DECLARE
@strSimpleFilter
varchar
(
1000
)
72
DECLARE
@strGroup
varchar
(
1000
)
73
/**/
/*
默认当前页
*/
74
IF
@CurrentPage
<
1
75
SET
@CurrentPage
=
1
76
/**/
/*
设置分页参数.
*/
77
SET
@strPageSize
=
CAST
(
@PageSize
AS
varchar
(
50
))
78
SET
@strStartRow
=
CAST
(((
@CurrentPage
-
1
)
*
@PageSize
+
1
)
AS
varchar
(
50
))
79
/**/
/*
筛选以及分组语句.
*/
80
IF
@Filter
IS
NOT
NULL
AND
@Filter
!=
''
81
BEGIN
82
SET
@strFilter
=
'
WHERE
'
+
@Filter
+
'
'
83
SET
@strSimpleFilter
=
'
AND
'
+
@Filter
+
'
'
84
END
85
ELSE
86
BEGIN
87
SET
@strSimpleFilter
=
''
88
SET
@strFilter
=
''
89
END
90
IF
@Group
IS
NOT
NULL
AND
@Group
!=
''
91
SET
@strGroup
=
'
GROUP BY
'
+
@Group
+
'
'
92
ELSE
93
SET
@strGroup
=
''
94
/**/
/*
执行查询语句
*/
95
EXEC
(
96
'
97 DECLARE @SortColumn
'
+
@type
+
'
98 SET ROWCOUNT
'
+
@strStartRow
+
'
99 SELECT @SortColumn=
'
+
@strSortColumn
+
'
FROM
'
+
@Tables
+
@strFilter
+
'
'
+
@strGroup
+
'
ORDER BY
'
+
@Sort
+
'
100 SET ROWCOUNT
'
+
@strPageSize
+
'
101 SELECT
'
+
@Fields
+
'
FROM
'
+
@Tables
+
'
WHERE
'
+
@strSortColumn
+
@operator
+
'
@SortColumn
'
+
@strSimpleFilter
+
'
'
+
@strGroup
+
'
ORDER BY
'
+
@Sort
+
'
102
'
103
)
104
GO
105
查看全文
相关阅读:
1052: 最大报销额
1036: 小希的数表
1050: 找出直系亲属
1048: 导弹防御系统
1051: 魔咒词典
以大数据眼光欣赏唐人文墨(一)
Java 内部类详解
那些“不务正业”的IT培训公司
Brackets 前端编辑器试用
Emmet 快速编写html代码
原文地址:https://www.cnblogs.com/wucf2004/p/770242.html
最新文章
NYOJ 860 又见01背包
HDu -2844 Coins多重背包
多重背包之 HDU -1171Big Event in HDU &HDU -2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
HDU -1864最大报销额(01背包)
HDU -1284钱币兑换
POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)
POJ-2387.Til the Cows Come Home.(五种方法:Dijkstra + Dijkstra堆优化 + Bellman-Ford + SPFA + Floyd-Warshall)
图论最短路径算法总结(Bellman-Ford + SPFA + DAGSP + Dijkstra + Floyd-Warshall)
HDU-1078.FatMouseandCheese(线性dp + dfs)
POJ-2533.Longest Ordered Subsequence (LIS模版题)
热门文章
HDU-1260.Tickets(简单线性DP)
HDU-1160.FatMouse'sSpeed.(LIS变形 + 路径打印)
HDU-1176.免费馅饼(数字三角形变形)
HDU-1074.DoingHomework(撞鸭dp二进制压缩版)
HDU-1087.SuperJUmpingJUmpingJumping.(DP and LISPP)
maven工程导入eclipse后报错
tomcat端口被占用
Matcher的replaceAll ()/appendReplacement()/appendTail()详细举例
Java正则表达式之Matcher介绍
Matcher的group()/group(int group)/groupCount()用法介绍
Copyright © 2011-2022 走看看