实现SQL分页的存储过程代码
SQL分页的存储过程代码,需要的朋友们直接拿去用,使用非常简单。
分享代码如下
USE[SendMessage] GO /******Object:StoredProcedure[dbo].[pages]ScriptDate:07/09/201513:46:50******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO ALTERPROC[dbo].[pages] ( @tbnamenvarchar(100),--要分页显示的表名 @FieldKeynvarchar(1000),--用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段 @PageCurrentint=1,--要显示的页码 @PageSizeint=10,--每页的大小(记录数) @FieldShownvarchar(1000)='',--以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段 @FieldOrdernvarchar(1000)='',--以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC @WhereStringnvarchar(1000)=N''--查询条件 ) AS begin IFISNULL(@FieldKey,N'')='' BEGIN RAISERROR(N'分页处理需要主键(或者惟一键)',1,16) RETURN END IFISNULL(@PageCurrent,0)<1SET@PageCurrent=1 IFISNULL(@PageSize,0)<1SET@PageSize=10 IFISNULL(@FieldShow,N'')=N''SET@FieldShow=N'*' IFISNULL(@FieldOrder,N'')=N'' SET@FieldOrder=N'' ELSE SET@FieldOrder=N'ORDERBY'+LTRIM(@FieldOrder) IFISNULL(@WhereString,N'')=N'' SET@WhereString=N'' ELSE SET@WhereString=N'WHERE'+@WhereString+N'' --计算分页显示的TOPN值 DECLARE@TopNvarchar(20),@StartRecordvarchar(20),@EndRecordvarchar(20) SELECT@TopN=@PageSize, @StartRecord=(@PageCurrent-1)*@PageSize+1, @EndRecord=(@PageCurrent-1)*@PageSize+@PageSize --第一页直接显示 IF@PageCurrent=1 EXEC(N'SELECTTOP'+@TopN +N''+@FieldShow +N'FROM'+@tbname +N''+@WhereString +N''+@FieldOrder) ELSE EXEC(N'withtemptblas( selectROW_NUMBER()Over('+@FieldOrder+')asrow,'+@FieldKey+'from'+@tbname+N''+@WhereString+') select'+@FieldShow+'from(selectB.*from(select'+@FieldKey+'fromtemptblwhererowbetween'+@StartRecord+'and'+@EndRecord+')Aleftjoin'+@tbname+'BonA.'+@FieldKey+'=B.'+@FieldKey+')C') END
以上就是本文的全部内容,希望对大家的学习有所帮助。