存储过程
/*
名称:spAll_ReturnRows
输入:
输出:
调用:
EXEC spAll_ReturnRows 'SELECT * FROM 表名', 页号, 返回记录数, '主键', '排序字段'
spAll_ReturnRows 'SELECT * FROM all_Categories',2,10,'[ID]','[ID]'
说明:[百万级]通用存储过程.分页存储过程..返回指定返回条数、指定页数的记录
作者:Dili J.F. Senders
邮件:diliatwellknow.net
网站:http://www.wellknow.net
更新:20040610
支持:http://bbs.wellknow.net
版权:转述时请注明来源:用思维创造未来的Wellknow.net
*/

CREATE PROCEDURE dbo.spAll_ReturnRows
(
@SQL nVARCHAR(4000),
@Page int,
@RecsPerPage int,
@ID VARCHAR(255),
@Sort VARCHAR(255)
)
AS

DECLARE @Str nVARCHAR(4000)

SET @Str='SELECT TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN
(SELECT TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@Sort

PRINT @Str

EXEC sp_ExecuteSql @Str
GO
分页
/*
名称:spAll_ReturnRows
输入:
输出:
调用:
EXEC spAll_ReturnRows 'SELECT * FROM 表名', 页号, 返回记录数, '主键', '排序字段'
spAll_ReturnRows 'SELECT * FROM all_Categories',2,10,'[ID]','[ID]'
说明:[百万级]通用存储过程.分页存储过程..返回指定返回条数、指定页数的记录
作者:Dili J.F. Senders
邮件:diliatwellknow.net
网站:http://www.wellknow.net
更新:20040610
支持:http://bbs.wellknow.net
版权:转述时请注明来源:用思维创造未来的Wellknow.net
*/
CREATE PROCEDURE dbo.spAll_ReturnRows
(
@SQL nVARCHAR(4000),
@Page int,
@RecsPerPage int,
@ID VARCHAR(255),
@Sort VARCHAR(255)
)
AS
DECLARE @Str nVARCHAR(4000)
SET @Str='SELECT TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN
(SELECT TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@Sort
PRINT @Str
EXEC sp_ExecuteSql @Str
GO 1
/// <summary>
2
/// 返回用于分页的HTML文本
3
/// </summary>
4
/// <param name="recordCount">记录总条数</param>
5
/// <param name="pageSize">每页大小</param>
6
/// <param name="currPage">当前页</param>
7
/// <returns>返回HTML文本</returns>
8
public static string GetPaperHtml(int recordCount,int pageSize,int currPage)
9
{
10
System.Text.StringBuilder result=new System.Text.StringBuilder("");
11
int pageOfBlock=10; //每块可以放几页
12
int maxPage=(recordCount+pageSize-1)/pageSize; //一共分多少页
13
int maxBlock=(maxPage+pageOfBlock-1)/pageOfBlock; //共有多少块
14
int currBlock=(currPage+pageOfBlock-1)/pageOfBlock; //当前是第几块
15
int nextPage=currPage+1; //下一页的页数
16
int previousPage=currPage-1; //前一页的页数
17
int nextBlockFirst=currBlock*pageOfBlock+1; //下一块的第一页
18
int previousBlockLast=(currBlock-1)*pageOfBlock; //上一块的第一页
19
//如果是第一页,则上一页和最前一页的链接无效
20
if (currPage>1)
21
{
22
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page=1";
23
result.Append("<a title='首页' href='"+href+"'><font face='webdings'>9</font></a> ");
24
href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+(--pageIndex);
25
result.Append("<a title='上一页' href='"+href+"'><font face='webdings'>3</font></a> ");
26
}
27
else
28
{
29
result.Append("<a disabled='true'><font face='webdings'>9</font></a> ");
30
result.Append("<a disabled='true'><font face='webdings'>3</font></a> ");
31
}
32
//如果是不是一块,则加上一个返回上一块的链接
33
if (currBlock>1)
34
{
35
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+previousBlockLast.ToString();
36
result.Append("<a title='前十页' href='"+href+"'>
</a> ");
37
}
38
//循环每一页
39
if (maxPage!=0)
40
{
41
//如果下一块的第一页大于最大页,则这一块的结束页索引为最大页,否则为下一块的第一页减1.
42
int endPage = (nextBlockFirst > maxPage) ? maxPage : nextBlockFirst - 1;
43
for (int i=previousBlockLast+1;i<=endPage;i++)
44
{
45
if (i==currPage)
46
{
47
result.Append("<font color='Red'>-<b>" + i.ToString() + "</b>-</font> ");
48
}
49
else
50
{
51
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+i.ToString();
52
result.Append("<a title='第" + i.ToString() +"页' href='"+href+"'>[ " + i.ToString() + " ]</a> ");
53
}
54
}
55
}
56
//如果不是最后一块,则加上一个指向下一块的链接
57
if (currBlock<maxBlock)
58
{
59
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+nextBlockFirst.ToString();
60
result.Append("<a title='后十页' href='"+href+"'>
</a> ");
61
}
62
//如果是最后一页或者记录数为零,则下一页及最后一页的链接无效
63
if (currPage!=maxPage && recordCount!=0)
64
{
65
pageIndex++;
66
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+(pageIndex);
67
result.Append("<a title='下一页' href='"+href+"'><font face='webdings'>4</font></a> ");
68
int count=0;
69
if(int.Parse(PLDs.Tables[0].Rows[0][7].ToString())%10==0)
70
{
71
count=int.Parse(PLDs.Tables[0].Rows[0][7].ToString())/10;
72
}
73
else
74
{
75
count=int.Parse(PLDs.Tables[0].Rows[0][7].ToString())/10+1;
76
}
77
pageIndex=count;
78
href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+(pageIndex);
79
result.Append("<a title='末页' href='"+href+"'><font face='webdings'>:</font></a> ");
80
}
81
else
82
{
83
result.Append("<a disabled='true'><font face='webdings'>4</font></a> ");
84
result.Append("<a disabled='true'><font face='webdings'>:</font></a> ");
85
}
86
return result.ToString();
87
}
/// <summary> 2
/// 返回用于分页的HTML文本 3
/// </summary> 4
/// <param name="recordCount">记录总条数</param> 5
/// <param name="pageSize">每页大小</param> 6
/// <param name="currPage">当前页</param> 7
/// <returns>返回HTML文本</returns> 8
public static string GetPaperHtml(int recordCount,int pageSize,int currPage) 9
{ 10
System.Text.StringBuilder result=new System.Text.StringBuilder(""); 11
int pageOfBlock=10; //每块可以放几页 12
int maxPage=(recordCount+pageSize-1)/pageSize; //一共分多少页 13
int maxBlock=(maxPage+pageOfBlock-1)/pageOfBlock; //共有多少块 14
int currBlock=(currPage+pageOfBlock-1)/pageOfBlock; //当前是第几块 15
int nextPage=currPage+1; //下一页的页数 16
int previousPage=currPage-1; //前一页的页数 17
int nextBlockFirst=currBlock*pageOfBlock+1; //下一块的第一页 18
int previousBlockLast=(currBlock-1)*pageOfBlock; //上一块的第一页 19
//如果是第一页,则上一页和最前一页的链接无效 20
if (currPage>1) 21
{ 22
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page=1"; 23
result.Append("<a title='首页' href='"+href+"'><font face='webdings'>9</font></a> "); 24
href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+(--pageIndex); 25
result.Append("<a title='上一页' href='"+href+"'><font face='webdings'>3</font></a> "); 26
} 27
else 28
{ 29
result.Append("<a disabled='true'><font face='webdings'>9</font></a> "); 30
result.Append("<a disabled='true'><font face='webdings'>3</font></a> "); 31
} 32
//如果是不是一块,则加上一个返回上一块的链接 33
if (currBlock>1) 34
{ 35
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+previousBlockLast.ToString(); 36
result.Append("<a title='前十页' href='"+href+"'>
</a> "); 37
} 38
//循环每一页 39
if (maxPage!=0) 40
{ 41
//如果下一块的第一页大于最大页,则这一块的结束页索引为最大页,否则为下一块的第一页减1. 42
int endPage = (nextBlockFirst > maxPage) ? maxPage : nextBlockFirst - 1; 43
for (int i=previousBlockLast+1;i<=endPage;i++) 44
{ 45
if (i==currPage) 46
{ 47
result.Append("<font color='Red'>-<b>" + i.ToString() + "</b>-</font> "); 48
} 49
else 50
{ 51
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+i.ToString(); 52
result.Append("<a title='第" + i.ToString() +"页' href='"+href+"'>[ " + i.ToString() + " ]</a> "); 53
} 54
} 55
} 56
//如果不是最后一块,则加上一个指向下一块的链接 57
if (currBlock<maxBlock) 58
{ 59
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+nextBlockFirst.ToString(); 60
result.Append("<a title='后十页' href='"+href+"'>
</a> "); 61
} 62
//如果是最后一页或者记录数为零,则下一页及最后一页的链接无效 63
if (currPage!=maxPage && recordCount!=0) 64
{ 65
pageIndex++; 66
string href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+(pageIndex); 67
result.Append("<a title='下一页' href='"+href+"'><font face='webdings'>4</font></a> "); 68
int count=0; 69
if(int.Parse(PLDs.Tables[0].Rows[0][7].ToString())%10==0) 70
{ 71
count=int.Parse(PLDs.Tables[0].Rows[0][7].ToString())/10; 72
} 73
else 74
{ 75
count=int.Parse(PLDs.Tables[0].Rows[0][7].ToString())/10+1; 76
} 77
pageIndex=count; 78
href="SIndex.aspx?TextSearch=\"+escape('"+TextSearch+"')+\"&DropSearch="+ASearch+"&page="+(pageIndex); 79
result.Append("<a title='末页' href='"+href+"'><font face='webdings'>:</font></a> "); 80
} 81
else 82
{ 83
result.Append("<a disabled='true'><font face='webdings'>4</font></a> "); 84
result.Append("<a disabled='true'><font face='webdings'>:</font></a> "); 85
} 86
return result.ToString(); 87
}

浙公网安备 33010602011771号