Code 1set ANSI_NULLS ON 2set QUOTED_IDENTIFIER ON 3go 4 5 6 7ALTERPROCEDURE[dbo].[GetPageCount] 8@tblNamevarchar(255), -- table name 9@fidlelistvarchar(2000), -- fields 10@fldNamevarchar(255), -- sort name 11@PageSizeint, -- page count 12@PageIndexint, -- page index 13@IsReCountbit, --total Recount if 0 do not return 14@OrderTypebit, -- order type if o do not order 15@strWherevarchar(1000) --Search where (NOTICE: DO NOT HAVE "where") 16AS 17declare@strSQLvarchar(6000) 18declare@strTmpvarchar(100),@tmpwherevarchar(200) 19declare@strOrdervarchar(400) 20 21if@OrderType!=0 22begin 23set@strTmp='<=(select min' 24set@strOrder=' order by ['+@fldName+'] desc' 25end 26else 27begin 28set@strTmp='>=(select max' 29set@strOrder=' order by ['+@fldName+'] asc' 30end 31set@tmpwhere=''; 32if(@strWhere!='') 33begin 34set@tmpwhere=' where '+@strWhere; 35end 36if@PageIndex=1 37begin 38set@strSQL='select top '+str(@PageSize) +''+@fidlelist+''+'from [' 39+@tblName+'] '+@tmpwhere+''+@strOrder 40end 41else 42begin 43 44set@strSQL='select top '+str(@PageSize) +''+@fidlelist+''+'from [' 45+@tblName+'] where ['+@fldName+']'+@strTmp+'([' 46+@fldName+']) from (select top '+str((@PageIndex-1)*@PageSize) +' [' 47+@fldName+'] from ['+@tblName+'] '+@tmpwhere+'' 48+@strOrder+') as tblTmp) '+@tmpwhere+''+@strOrder 49end 50exec(@strSQL) 51print@strSQL 52if@IsReCount!=0 53begin 54set@strSQL='select count(*) as Total from ['+@tblName+']'+@tmpwhere 55exec (@strSQL) 56end