抄自
http://www.cnblogs.com/wang123/archive/2006/08/05/468717.html
1
CREATE PROCEDURE GetRecordFromPage
2
@tblName varchar(255), -- 表名
3
@fldName varchar(255), -- 字段名
4
@PageSize int = 10, -- 页尺寸
5
@PageIndex int = 1, -- 页码
6
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回
7
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
8
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
9
AS
10
11
declare @strSQL varchar(1000) -- 主语句
12
declare @strTmp varchar(300) -- 临时变量
13
declare @strOrder varchar(400) -- 排序类型
14
15
if @OrderType != 0
16
begin
17
set @strTmp = '<(select min'
18
set @strOrder = ' order by [' + @fldName +'] desc'
19
end
20
else
21
begin
22
set @strTmp = '>(select max'
23
set @strOrder = ' order by [' + @fldName +'] asc'
24
end
25
26
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
27
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
28
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
29
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
30
+ @strOrder
31
32
if @strWhere != ''
33
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
34
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
35
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
36
+ @fldName + '] from [' + @tblName + '] where (' + @strWhere + ') '
37
+ @strOrder + ') as tblTmp) and (' + @strWhere + ') ' + @strOrder
38
39
if @PageIndex = 1
40
begin
41
set @strTmp = ''
42
if @strWhere != ''
43
set @strTmp = ' where (' + @strWhere + ')'
44
45
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
46
+ @tblName + ']' + @strTmp + ' ' + @strOrder
47
end
48
49
if @IsCount != 0
50
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
51
52
exec (@strSQL)
53
GO
54
CREATE PROCEDURE GetRecordFromPage2
@tblName varchar(255), -- 表名3
@fldName varchar(255), -- 字段名4
@PageSize int = 10, -- 页尺寸5
@PageIndex int = 1, -- 页码6
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回7
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序8
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)9
AS10

11
declare @strSQL varchar(1000) -- 主语句12
declare @strTmp varchar(300) -- 临时变量13
declare @strOrder varchar(400) -- 排序类型14

15
if @OrderType != 016
begin17
set @strTmp = '<(select min'18
set @strOrder = ' order by [' + @fldName +'] desc'19
end20
else21
begin22
set @strTmp = '>(select max'23
set @strOrder = ' order by [' + @fldName +'] asc'24
end25

26
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['27
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['28
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['29
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'30
+ @strOrder31

32
if @strWhere != ''33
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['34
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['35
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['36
+ @fldName + '] from [' + @tblName + '] where (' + @strWhere + ') '37
+ @strOrder + ') as tblTmp) and (' + @strWhere + ') ' + @strOrder38

39
if @PageIndex = 140
begin41
set @strTmp = ''42
if @strWhere != ''43
set @strTmp = ' where (' + @strWhere + ')'44

45
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['46
+ @tblName + ']' + @strTmp + ' ' + @strOrder47
end48

49
if @IsCount != 050
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'51

52
exec (@strSQL)53
GO54

简单调用方法:


}
浙公网安备 33010602011771号