SQL Server 比较实用的大数据量分页存储过程
发布时间:2020-12-12 07:58:02 所属栏目:MsSql教程 来源:网络整理
导读:感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! createprocsp_PublicTurnPageWebSite( @TBNamenvarchar(100)=,--表名,如pinyin @PageSizeint=10,--每页的记录数,默认为10 @CurPageint=1,--表示当前页1 @KeyFieldnvarchar(100)=ID,--关
感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧! create proc sp_PublicTurnPageWebSite(@TBName nvarchar(100)='', --表名,如 pinyin @PageSize int=10, --每页的记录数,默认为 10 @CurPage int=1, --表示当前页 1 @KeyField nvarchar(100)='ID', --关键字段名,默认为 ID,该字段要求是表中的索引 或 无重复和不为空的字段 @KeyAscDesc nvarchar(4)='ASC', --关键字的升、降序,默认为升序 ASC , 降序为 DESC @Fields nvarchar(500)='*', --所选择的列名,默认为全选 @Condition nvarchar(200)='', --where 条件,默认为空 @Order nvarchar(200)='' --排序条件,默认为空 ) with encryption as if @TBName = '' begin raiserror('请指定表名!',11,1) return end if @PageSize <=0 or @CurPage <0 begin raiserror('当前页数和每页的记录数都必须大于零!',1) return end if @KeyAscDesc = 'DESC' set @KeyAscDesc = '<' else set @KeyAscDesc = '>' if @Condition <> '' set @Condition = ' where ' + @Condition declare @SQL nvarchar(2000) set @SQL = '' if @CurPage = 1 set @SQL = @SQL + 'Select Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @TBName + @Condition + ' ' + @Order else begin declare @iTopNum int set @iTopNum = @PageSize * (@CurPage - 1) set @SQL = @SQL + 'declare @sLastValue nvarchar(100)' + char(13) set @SQL = @SQL + 'Select Top ' + cast(@iTopNum as nvarchar(20)) + ' @sLastValue=' + @KeyField + ' FROM ' + @TBName + @Condition + ' ' + @Order + char(13) declare @Condition2 nvarchar(200) if @Condition = '' set @Condition2 = ' where ' + @KeyField + @KeyAscDesc + '@sLastValue ' else set @Condition2 = ' and ' + @KeyField + @KeyAscDesc + '@sLastValue ' set @SQL = @SQL + 'Select Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @TBName + @Condition + @Condition2 + @Order end EXECUTE sp_executesql @SQL (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 增加的网络延迟会导致MS SQL Server中的表锁
- SQL Server中检查字段的值是否为数字的方法
- sql-server-2005 – 如何查找具有statistics_norecompute =
- SQLite 入门教程一 基本控制台(终端)命令
- 将SQL存储的DateTime值迁移到DateTimeOffset最佳做法?
- SQL Server 建立索引
- 数据库 – 如何对HQL(Hibernate Query Language)进行注释?
- sql-server – 关键字’case’附近的语法不正确
- sql-server – 是RedGate SQL Source Control吗?
- sql-server – 如何删除SQL Server 2008中的区分大小写检查