/**//* 名称:PagingRecord 作用:按任意字段进行排序分页 作者:谢忠领 时间:2007-2-1 声明:此代码你可以无偿使用及转载,但在转载时,请勿移称本文字声明 */ CREATEPROCEDURE[dbo].[PagingRecord] ( @PageIndexint,--页号,从0开始 @PageSizeint,--页尺寸 @OrderFieldvarchar(100),--排序字段及类型(多个条件用逗号分开)如:JobID DESC,Checkintime @TableNamevarchar(100),--表名或视图表 @StrWherevarchar(2000),--条件 @FieldListvarchar(2000),--欲选择字段列表 @DoCountASbit=1-- 0值返回记录总数, 非 0 值则返回记录 ) AS BEGINTRAN DECLARE@SqlQueryvarchar(4000) IF@DoCount<>0 Goto GetCount Else Goto GetSearch GetCount:--返回记录总数 DECLARE@SearchSqlASNvarchar(4000) SET@SearchSql='SELECT Count(*) AS Total FROM '+@TableName+' WHERE '+@StrWhere exec sp_executesql @SearchSql --print @SearchSql COMMITTRAN return GetSearch: SET@SqlQuery='SELECT '+@FieldList+' FROM (SELECT row_number() over(ORDER BY '+@OrderField+') as rownum, '+@FieldList+' FROM '+@TableName+' WHERE '+@StrWhere+') as temp WHERE rownum BETWEEN ('+cast(@PageIndexasvarchar)+'-1)*'+cast(@PageSizeasvarchar)+'+1 and '+cast(@PageIndexasvarchar)+'*'+cast(@PageSizeasvarchar) +' ORDER BY '+@OrderField --print @SqlQuery SET NOCOUNT ON execute(@SqlQuery) SET NOCOUNT OFF COMMITTRAN