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))+'['
	
	
        
        
        
	
        相关新闻>>
最新推荐更多>>>
              
          - 发表评论
- 
				
- 最新评论 进入详细评论页>>




