CREATE    Procedure prGetRecordByPage
(
@PageSize int, --每页的记录条数 
@PageNumber int, --当前页面
@QuerySql varchar(100),--部分查询字符串,如* From Test order by id desc
@KeyField varchar(500),@pageCount int output, 
@recordCount int output
)
AS
Beginselect @recordCount='count(*) '+(@QuerySql)set @pageCount=ceiling(@recordCount*1.0/@PageSize )
Declare @SqlTable AS varchar(1000)
Declare @SqlText AS Varchar(1000)
Set @SqlTable='Select Top '+CAST(@PageNumber*@PageSize AS varchar(30))+'* '+@QuerySql
Set @SqlText='Select Top '+Cast(@PageSize AS varchar(30))+' * From '
+'('+@SqlTable+') As TembTbA '
+'Where '+@KeyField+' Not In (Select Top '+CAST((@PageNumber-1)*@PageSize AS varchar(30))+' '+@KeyField+' From '
+'('+@SqlTable+') AS TempTbB)'
Exec(@SqlText)EndGO
---------------------------------------------------
....//得到页数和记录数
sqlCommand1.Parameters.Add("@pageCount",SqlDbType.Int); 
sqlCommand1.Parameters["@pageCount"].Value = pageCount; 
sqlCommand1.Parameters["@pageCount"].Direction = ParameterDirection.Output;  //存储过程中的输出参数 sqlCommand1.Parameters.Add("@recordCount",SqlDbType.Int); sqlCommand1.Parameters["@recordCount"].Value = recordCount; sqlCommand1.Parameters["@recordCount"].Direction = ParameterDirection.Output; //存储过程中的输出参数 
....
/////////