/**//* ****************************************************************************************** 过程名称:Common_Type_Pagination 过程功能: 代码设计:小朱(zsy619@163.com) 设计时间:2005-11-3 13:58:26 ****************************************************************************************** 功能描述: ****************************************************************************************** 如果您修改了我的程序,请留下修改记录,以便对程序进行维护,谢谢 !!! ========================================================================================== 修改人 修改时间 修改原因 ------------------------------------------------------------------------------------------ ========================================================================================== ****************************************************************************************** 备注: ***************************************************************************************** */ CreateProcedure[dbo].[Common_Type_Pagination] @tblNamevarchar(255), -- 表名 @strGetFieldsvarchar(1000) ='*', -- 需要返回的列名 @strWherevarchar(1500) ='', -- 查询条件 (注意: 不要加 where) @fldNamevarchar(255)='', -- 排序的字段名 @orderTypebit=0, -- 设置排序类型, 0 值为升序, 非 0 值为降序 @pageSizeint=10, -- 页尺寸 @pageIndexint=1, -- 页码 @returnTypebit=0-- 设置返回类型,0 值为返回记录集, 非 0 值为返回记录总数 AS Declare@intResultInt BeginTran -----------------------------------------------------------------代码设计-------------------------------------------------------------------- declare@strSQLvarchar(5000) -- 主语句 declare@strTmpvarchar(110) -- 临时变量 declare@strOrdervarchar(400) -- 排序类型 if@returnType!=0-- 返回记录总数 begin if@strWhere!='' set@strSQL='select count(*) as total from ['+@tblName+'] where '+@strWhere else set@strSQL='select count(*) as total from ['+@tblName+']' end else-- 返回记录集 begin if@orderType!=0-- 降序 begin set@strTmp='<(select min' set@strOrder=' order by ['+@fldName+'] desc' end else begin set@strTmp='>(select max' set@strOrder=' order by ['+@fldName+'] asc' end if@pageIndex=1--如果是第一页就执行以下代码,这样会加快执行速度 begin if@strWhere!='' set@strSQL='select top '+str(@pageSize) +''+@strGetFields+' from ['+@tblName+'] where '+@strWhere+''+@strOrder else set@strSQL='select top '+str(@pageSize) +''+@strGetFields+' from ['+@tblName+'] '+@strOrder end else--以下代码赋予了@strSQL以真正执行的SQL代码 begin if@strWhere!='' set@strSQL='select top '+str(@pageSize) +''+@strGetFields+' from ['+@tblName+'] where ['+@fldName+']'+@strTmp+'(['+@fldName+']) from (select top '+str((@pageIndex-1) *@pageSize) +' ['+@fldName+'] from ['+@tblName+'] where '+@strWhere+''+@strOrder+') as tblTmp) and '+@strWhere+''+@strOrder else set@strSQL='select top '+str(@pageSize) +''+@strGetFields+' from ['+@tblName+'] where ['+@fldName+']'+@strTmp+'(['+@fldName+']) from (select top '+str((@pageIndex-1) *@pageSize) +' ['+@fldName+'] from ['+@tblName+']'+@strOrder+') as tblTmp)'+@strOrder end end exec(@strSQL) Set@intResult=@@ROWCOUNT ---------------------------------------------------------------------------------------------------------------------------------------------------- If@@Error<>0 Begin RollBackTran Return-1 End Else Begin CommitTran Return@intResult End GO