createprocedure SqlDataPaging @tbNamevarchar(255), --表名 @tbFieldsvarchar(1000), --返回字段 @OrderFieldvarchar(255), --排序的字段名 @PageSizeint, --页尺寸 @PageIndexint, --页码 @OrderTypebit, --排序类型,1是升序,0是降序 @strWherevarchar(1500), --查询条件 @Totalint output --返回总记录数 as declare@strSqlvarchar(5000) --主语句 declare@strOrdervarchar(200) --排序 declare@strSqlCountnvarchar(500)--查询记录总数主语句 declare@strtempvarchar(50) --排序附加语句 --------------排序-----------------0是降序,1未升序 set@Total=0 if@OrderType!=0 begin set@strtemp='>=(select max(' set@strOrder='order by '+@OrderField+' asc ' end else begin set@strtemp='<=(select min(' set@strOrder='order by '+@OrderField+' desc' end --------------总记录数--------------- if@strWhere!='' begin set@strSqlCount='Select @TotalCout=count(*) from '+@tbName+' where '+@strWhere end else begin set@strSqlCount='Select @TotalCout=count(*) from '+@tbName end --------------分页为第一页------------ if@PageIndex=1or@PageIndex<=0 begin set@PageIndex=1 if@strWhere!='' begin set@strSql='Select top'+str(@PageSize)+''+@tbFields+' from '+@tbName+' where '+@strWhere+''+@strOrder end else begin set@strSql='Select top'+str(@PageSize)+''+@tbFields+' from '+@tbName+''+@strOrder end end else begin if@strWhere!='' begin set@strSql='Select top '+str(@PageSize) +''+@tbFields +' from '+@tbName+' where '+@OrderField+'' +@strtemp+''+@OrderField+') from (select top ' +str((@PageIndex-1)*@PageSize) +''+@OrderField+' from '+@tbName +' where '+@strWhere+''+@strOrder+') as tb)'+@strOrder end else begin set@strSql='Select top '+str(@PageSize) +''+@tbFields +' from '+@tbName+' where '+@OrderField+'' +@strtemp+''+@OrderField+') from (select top ' +str((@PageIndex-1)*@PageSize) +''+@OrderField+' from '+@tbName +''+@strWhere+''+@strOrder+') as tb)'+@strOrder end end exec sp_executesql @strSqlCount,N'@TotalCout int output',@Total output exec(@strSql)