当前位置:Gxlcms > 数据库问题 > sql 分页rownumber方式

sql 分页rownumber方式

时间:2021-07-01 10:21:17 帮助过:2人阅读

procedure [dbo].[proc_getpaging] ( @TableName nvarchar(500), --表名(可以为多表) @ReFieldsStr nvarchar(200) = *, --字段名(全部字段为*) @OrderString nvarchar(200), --排序字段(支持多字段不用加order by) @OrderType nvarchar(4)=asc, --排序类型 (ASC DESC) @WhereString nvarchar(500) =N‘‘, --条件语句(不用加where) @PageSize int, --每页多少条记录 @PageIndex int = 1 , --指定当前为第几页 @TotalRecord int output , --返回总记录数 @ErrorMsg nvarchar(500) output --返回错误消息 ) as begin begin try declare @StartRecord int; declare @EndRecord int; declare @TotalCountSql nvarchar(1000); declare @SqlString nvarchar(2000); set @StartRecord = (@PageIndex-1)*@PageSize + 1 set @EndRecord = @StartRecord + @PageSize - 1 set @TotalCountSql= Nselect @TotalRecord = count(*) from + @TableName;--总记录数语句 set @SqlString = N(select row_number() over (order by + @OrderString + +@OrderType+) as rowId,+@ReFieldsStr+ from + @TableName; if (@WhereString! = ‘‘ or @WhereString!=null) begin set @TotalCountSql=@TotalCountSql + where + @WhereString; set @SqlString =@SqlString+ where + @WhereString; end --第一次执行得到 if(@TotalRecord is null) begin exec sp_executesql @TotalCountSql,N@TotalRecord int out,@TotalRecord output; end ----执行主语句 set @SqlString =select * from + @SqlString + ) as t where rowId between + ltrim(str(@StartRecord)) + and + ltrim(str(@EndRecord)); exec(@SqlString) end try begin catch set @ErrorMsg = ERROR_MESSAGE() end catch end

declare @total int
declare @msg nvarchar(100)
exec  proc_getpaging
‘Ritems,honor‘,‘Ritems.*‘,‘Ritems.itemname‘,‘asc‘,‘‘,2,1,@total output  ,@msg  output
print @total
print @msg

sql 分页rownumber方式

标签:

人气教程排行