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))+'['
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • LINUX上RMAN自动备份脚本
  • sql server 列转行
  • SQL SERVER2008日常自动化备份
  • SQL Server 2005 镜像构建手册
  • SQL编程(一)
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1