T-SQL分页存储过程
来源:未知 责任编辑:责任编辑 发表时间:2015-10-08 14:16 点击:次
T-SQL分页存储过程
最近忙于找工作,面试时,遇到面试官要用我用T-SQL语句写一个分页存储过程,当时我一下子就傻了,好长时间没有写了,一时都忘记了,趁着今天有空,花时间写了一下,下面将Code粘贴出来,如有错误之处,望大家指正。
第一个存储过程相对比较复杂,传入参数较多,涉及到排序。第二个存储过程相对简单点。
分页存储一: www.2cto.com
1 create Procedure prc_GetRecordForPaging
2 @tableName varchar(255),--表名
3 @fieldName varchar(255),--字段名称
4 @pageSize int=10, --单页显示大小
5 @pageIndex int=1, --页码
6 @orderType bit=0, --设置排序类型,非0则是降序
7 @strCondition varchar(2000)='' --查询条件(注意,不要添加where语句)
8 as
9 declare @strSQL varchar(6000) --主执行语句
10 declare @strTemp varchar(1000) --临时执行语句
11 declare @strOrder varchar(500) --排序语句
12 if @orderType != 0 --降序
13 begin
14 set @strTemp='< (select min'
15 set @strOrder=' order by ['+@fieldName+'] desc' --排序语句
16 end
17 else -- 升序
18 begin
19 set @strTemp ='> (select Max'
20 set @strOrder =' order by ['+@fieldName+'] asc'
21 end
22 set @strSQL ='select top'+str(@pageSize)+' * from '
23 + @tableName+'] where ['+ @fieldName+ ']'
24 + @strTemp+ '(['+ @fieldName+ ']) from ( select top'+
25 + str(@pageSize*(@pageIndex-1))+'['
26 + @fieldName +'] from ['+ @tableName+']'
27 + @strOrder + ') as tableTemp)'
28 + @strOrder www.2cto.com
29
30 if @strCondition != ''
31 set @strSQL ='select top'+str(@pageSize)+' * from '
32 + @tableName+'] where ['+ @fieldName+ ']'
33 + @strTemp+ '(['+ @fieldName+ ']) from ( select top'+
34 + str(@pageSize*(@pageIndex-1))+'['
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>