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
查看全文
相关阅读:
HDOJ/HDU 2560 Buildings(嗯~水题)
HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)
POJ1703Find them, Catch them
BZOJ2303: [Apio2011]方格染色
BZOJ2809: [Apio2012]dispatching
POJ1611The Suspects
BZOJ2006: [NOI2010]超级钢琴
BZOJ2288: 【POJ Challenge】生日礼物
BZOJ1150: [CTSC2007]数据备份Backup
洛谷P1316 P1824
原文地址:https://www.cnblogs.com/wucf2004/p/770242.html
最新文章
SDUTOJ 3374 数据结构实验之查找二:平衡二叉树
POJ 2309 BST
UVA 1525 Falling Leaves
HDU 3791 二叉搜索树
HDU 1317 XYZZY
SDUTOJ 2498 数据结构实验之图论十一:AOE网上的关键路径
HDU 4109 Instrction Arrangement
POJ 3687 Labeling Balls
POJ 2367 Genealogical tree
POJ 1270 Following Orders
热门文章
Educational Codeforces Round 76 (Rated for Div. 2)
[cf 1245 F] Daniel and Spring Cleaning
卡特兰数(Catalan Number) 算法、数论 组合~
HDOJ/HDU 2710 Max Factor(素数快速筛选~)
HDOJ/HDU 2700 Parity(奇偶判断~)
HDOJ/HDU 2568 前进(简单题)
HDOJ/HDU 2567 寻梦(字符串简单处理)
HDOJ/HDU 2566 统计硬币(公式~遍历~)
HDOJ/HDU 2562 奇偶位互换(交换位置~)
HDOJ/HDU 2561 第二小整数(水题~排序~)
Copyright © 2011-2022 走看看