set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go --分页用到的存储过程 CreatePROCEDURE[dbo].[Up_Paging_RowCount] ( @Tablesvarchar(1000), @PKvarchar(100), @Sortvarchar(200) =NULL, @PageNumberint=1, @PageSizeint=10, @Fieldsvarchar(1000) ='*', @Filtervarchar(1000) =NULL, @Groupvarchar(1000) =NULL) AS /**//*Default Sorting*/ IF@SortISNULLOR@Sort='' SET@Sort=@PK /**//*Find the @PK type*/ DECLARE@SortTablevarchar(100) DECLARE@SortNamevarchar(100) DECLARE@strSortColumnvarchar(200) DECLARE@operatorchar(2) DECLARE@typevarchar(100) DECLARE@precint /**//*Set sorting variables.*/ IFCHARINDEX('DESC',@Sort)>0 BEGIN SET@strSortColumn=REPLACE(@Sort, 'DESC', '') SET@operator='<=' END ELSE BEGIN IFCHARINDEX('ASC', @Sort) =0 SET@strSortColumn=REPLACE(@Sort, 'ASC', '') SET@operator='>=' END IFCHARINDEX('.', @strSortColumn) >0 BEGIN SET@SortTable=SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn)) SET@SortName=SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) +1, LEN(@strSortColumn)) END ELSE BEGIN IFCHARINDEX('[', @Tables) =1andCHARINDEX(']', @Tables) =len(@Tables) SET@SortTable=SUBSTRING(@Tables,2,(len(@Tables)-2)) else set@SortTable=@Tables SET@SortName=@strSortColumn SET@SortName=@strSortColumn END SELECT@type=t.name, @prec=c.prec FROM sysobjects o JOIN syscolumns c on o.id=c.id JOIN systypes t on c.xusertype=t.xusertype WHERE o.name =@SortTableAND c.name =@SortName IFCHARINDEX('char', @type) >0 SET@type=@type+'('+CAST(@precASvarchar) +')' DECLARE@strPageSizevarchar(50) DECLARE@strStartRowvarchar(50) DECLARE@strFiltervarchar(1000) DECLARE@strSimpleFiltervarchar(1000) DECLARE@strGroupvarchar(1000) /**//*Default Page Number*/ IF@PageNumber<1 SET@PageNumber=1 /**//*Set paging variables.*/ SET@strPageSize=CAST(@PageSizeASvarchar(50)) SET@strStartRow=CAST(((@PageNumber-1)*@PageSize+1) ASvarchar(50)) /**//*Set filter & group variables.*/ IF@FilterISNOTNULLAND@Filter!='' BEGIN SET@strFilter=' WHERE '+@Filter+'' SET@strSimpleFilter=' AND '+@Filter+'' END ELSE BEGIN SET@strSimpleFilter='' SET@strFilter='' END IF@GroupISNOTNULLAND@Group!='' SET@strGroup=' GROUP BY '+@Group+'' ELSE SET@strGroup='' /**//*Execute dynamic query*/ EXEC( ' DECLARE @SortColumn '+@type+' SET ROWCOUNT '+@strStartRow+' SELECT @SortColumn='+@strSortColumn+' FROM '+@Tables+''+@strFilter+''+@strGroup+' ORDER BY '+@Sort+' SET ROWCOUNT '+@strPageSize+' SELECT '+@Fields+' FROM '+@Tables+' WHERE '+@strSortColumn+@operator+' @SortColumn '+@strSimpleFilter+''+@strGroup+' ORDER BY '+@Sort+' ' )