/* 数据库分页存储过程,支持倒序和升序 参数说明: @tablename:为搜索表名 @tablefield:为表的字段,约定为表的主键, @where:为搜索表名,要显示所有记录请设为"1=1" @orderby:为搜索结果排序,如order by id desc @fieldlist:为字段列表,如userid, username @curpage:当前页码 @page_record:每页记录条数 @Sort:排序标识(如果是倒序排,参数值为desc,为升序,参数值为asc,跟orderby参数是对应的) 结果: 返回表tablename中满足条件where的第curpage页的page_record条记录,结果按orderby排序 */ CreatePROCEDURE proc_CommonPaging @tablenamevarchar(100), @tablefieldvarchar(20), @wherevarchar(5000), @orderbyvarchar(500), @fieldlistvarchar(1000), @curpageint, @page_recordint, @sortvarchar(8) AS BEGIN DECLARE@cmdvarchar(8000) DECLARE@uprecordint DECLARE@Opvarchar(2) -- 操作符 DECLARE@max_minvarchar(4) -- 最大/最小计算 SET@op='<' SET@max_min='MIN' IF@sort='asc' BEGIN SET@Op='>' SET@max_min='MAX' END SET@uprecord=@curpage*@page_record IF@curpage=0 SET@cmd='Select TOP '+cast(@page_recordASNVARCHAR)+''+@fieldlist+' FROM '+@tablename+' Where '+@where+''+@orderby ELSE SET@cmd='Select TOP '+cast(@page_recordASNVARCHAR)+''+@fieldlist+' FROM '+@tablename+' Where '+@where+' AND '+@tablefield+' '+@op+' (Select '+@max_min+'('+@tablefield+') FROM (Select TOP '+cast(@uprecordASNVARCHAR)+''+@tablefield+' FROM '+@tablename+' Where '+@where+''+@orderby+') AS TmpTbl ) AND '+@where+''+@orderby SET@cmd=@cmd+'; Select COUNT(*) FROM '+@tablename+' Where '+@where EXEC(@cmd) PRINT(@cmd) END GO