通用分页存储过程,一个比较通用的分页存储过程

闲着没事,想起了之前写的一个存储过程。以前在做项目的过程中总是在那里使劲的想我这个存储过程写过了的,可到底放哪里了呢(想不到了,只好自己又重新写一遍),唉! 今天将它摘录下来,以后就不用这么的麻烦了。。。。。。 set ANSI_NULLS _disibledevent=>@TotalPage Set @PageIndex = @TotalPage --处理开始点和结束点 Declare @StartRecord int Declare @EndRecord int set @StartRecord = (@PageIndex-1)*@PageSize + 1 set @EndRecord = @StartRecord + @PageSize - 1 --继续合成sql语句 SET @Sql = @Sql +' SELECT * FROM temptbl WHERE RowNumber BETWEEN ' + Convert(varchar(50),@StartRecord) + ' and '+ Convert(varchar(50),@EndRecord) Exec(@Sql) --------------------------------------------------- If @@Error <> 0 Begin RollBack Tran Return -1 End Else Begin Commit Tran Return @TotalRecord ---返回记录总数 End end -------------------------------------------------------------------------------------------------------------------- 然后需要做的就是写个方法调用上面的存储过程: public DataSet GetClienteleFeYePro(string tableName, string fldName, string orderFiled, int OrderType, string strWhere, int pageSize, int pageIndex, out int allTotal,out int totalPage) { Database db = DatabaseFactory.CreateDatabase(); DbCommand dbCommand = db.GetStoredProcCommand("UP_GetRecordByPageTest"); db.AddInParameter(dbCommand, "tblName", DbType.AnsiString, tableName); db.AddInParameter(dbCommand, "fldName", DbType.AnsiString, fldName); db.AddInParameter(dbCommand, "OrderFiled", DbType.AnsiString, orderFiled); db.AddInParameter(dbCommand, "OrderType", DbType.Int32, OrderType); db.AddInParameter(dbCommand, "strWhere", DbType.String, strWhere); db.AddInParameter(dbCommand, "PageSize", DbType.Int32, pageSize); db.AddInParameter(dbCommand, "PageIndex", DbType.Int32, pageIndex); db.AddOutParameter(dbCommand, "TotalRecord", DbType.Int32, 4); db.AddOutParameter(dbCommand, "TotalPage", DbType.Int32, 4); var ds = db.ExecuteDataSet(dbCommand); allTotal = (int)db.GetParameterValue(dbCommand, "TotalRecord");//获取存储过程中的返回总记录参数 totalPage = (int)db.GetParameterValue(dbCommand, "TotalPage");//获取存储过程中的返回总页数参数 return ds; }
Tags:  通用存储过程 存储过程实现分页 分页的存储过程 分页存储过程 通用分页存储过程

延伸阅读

最新评论

发表评论