存储过程:
  CREATE OR REPLACE PACKAGE pkg_tableType
 IS 
 procedure FY
 ( 
 TableName varchar2, -- 表名
 getFields varchar2, -- 字段名(全部字段为*) 
 OrderField varchar2, -- 排序字段(必须!支持多字段) 
 whereCondition varchar2, -- 条件语句(不用加where) 
 pageSize int, -- 每页多少条记录 
 pageIndex int, -- 指定当前为第几页 
 recordCount out int , --返回总记录条数 
 cur_out out sys_refcursor --返回的是数据集 ); 
 END; -------------创建包体-------------------- 
 CREATE OR REPLACE PACKAGE body pkg_tableType 
 IS 
 procedure FY( 
 TableName varchar2, -- 表名 
 getFields varchar2, -- 字段名(全部字段为*)
 OrderField varchar2, -- 排序字段(必须!支持多字段)
 whereCondition varchar2, -- 条件语句(不用加where) 
 pageSize int, -- 每页多少条记录
 pageIndex int, -- 指定当前为第几页 
 recordCount out int , --返回总记录条数
 cur_out out sys_refcursor --返回的是数据集
 ) i
 s 
 v_sql varchar2(500); 
 StartRecord int; 
 EndRecord int; 
 sPageIndex int; 
 pageCount int; 
 begin 
 if whereCondition is null then  
 v_sql := 'select count(*) from ' || TableName;  
 else   v_sql := 'select count(*) from ' || TableName ||' where ' || whereCondition; 
 end if;  
 execute immediate v_sql into recordCount; --计算总记录数  
 pageCount:=CEIL((recordCount||0.0)/PageSize); --计算总页数   
 sPageIndex:=pageIndex;   --处理开始点和结束点 
 if(pageIndex<=0)then   sPageIndex:=1; 
 elsif(pageIndex>pageCount)then   sPageIndex:=pageCount; 
 end if;   
 StartRecord := (sPageIndex-1)*PageSize + 1;  
 EndRecord := StartRecord +pageSize - 1;   --合成sql  
 if whereCondition is not null then     
 v_sql:='select * from (select row_number() over (order by '||OrderField||' ) as rn,d.* from '     ||TableName||' d where '||+whereCondition||') where rn>'||StartRecord||' and rn<='||EndRecord;   else     v_sql:='select * from (select row_number() over (order by '||OrderField||' ) as rn,d.* from '     ||TableName||' d) where rn>'||StartRecord||' and rn<='||EndRecord;   end if;     open cur_out for v_sql;   end FY; END ;
  DAL层业务逻辑(调用存储过程)
 /// 分页存储过程      
  /// </summary>        
  /// <param name="TableName">表名</param>   
  /// <param name="getFields">字段名(全部字段为*)</param>  
  /// <param name="OrderField">排序字段(必须!支持多字段)</param>    
  /// <param name="whereCondition">条件语句(不用加where)</param>   
  /// <param name="pageSize">每页多少条记录</param>        
  /// <param name="pageIndex">指定当前为第几页</param>    
  /// <returns></returns>      
  public static DataSet GetProductsByPagerProc(string TableName, string getFields, string OrderField, string whereCondition, int pageSize, int pageIndex, out int recordCount)   
  {           
    Database db = DBHelper.CreateDataBase();   
    StringBuilder sb = new StringBuilder();
  sb.Append("Shop_Product_Query.Pagination");
  DbCommand cmd = db.GetStoredProcCommand(sb.ToString());
  db.AddInParameter(cmd, "TableName", DbType.String, TableName);//输入参数
  db.AddInParameter(cmd, "getFields", DbType.String, getFields);//输入参数
  db.AddInParameter(cmd, "OrderField", DbType.String, OrderField);//输入参数
  db.AddInParameter(cmd, "whereCondition", DbType.String, whereCondition);//输入参数
  db.AddInParameter(cmd, "pageSize", DbType.Int32, pageSize);//输入参数
  db.AddInParameter(cmd, "pageIndex", DbType.Int32, pageIndex);//输入参数
  db.AddOutParameter(cmd, "recordCount", DbType.Int32, Int32.MaxValue);//输出参数
  DataSet ds = db.ExecuteDataSet(cmd); 
  recordCount = int.Parse(db.GetParameterValue(cmd, "recordCount").ToString());//企业库获取输出参数
  return ds;         } 
  页面层调用DAL:
 public void DataBind() 
  {
  int intPageIndex = this.AspNetPager1.CurrentPageIndex;
  int intPageSize = this.AspNetPager1.PageSize;
 int count = 0;
  DataSet dt = Sys_ParamService.GetProductsByPagerProc("products", "PRODUCTCODE,PRODUCTNAME,HAOBAIPRICE", "productcode", "productname like '%蒙牛%'",
  intPageSize, intPageIndex, out count);
  this.AspNetPager1.RecordCount = count;
  GridView1.DataSource = dt;
  GridView1.DataBind();         }
  //分页事件
  protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)         {
  this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
  DataBind();
  }
  分页控件样式:
 <table cellpadding="0" cellspacing="0" align="left" width="99%" class="border">
  <tr>
  <td align="left">
  <webdiyer:AspNetPager ID="AspNetPager1" CssClass="paginator" CurrentPageButtonClass="cpb"
  runat="server" AlwaysShow="True" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页"                         PageSize="3" PrevPageText="上一页" ShowCustomInfoSection="Left" CustomInfoTextAlign="Center"                         LayoutType="Table" CustomInfoHTML="当前第%CurrentPageIndex%/%PageCount%页 每页%PageSize%条 共%RecordCount%条记录"                         OnPageChanging="AspNetPager1_PageChanging" PageIndexBoxType="DropDownList" ShowPageIndexBox="Always">                     </webdiyer:AspNetPager>                 </td>             </tr>         </table>
  <style type="text/css">
  .paginator         {
  font: 12px Arial, Helvetica, sans-serif;
  padding: 10px 20px 10px 0;
  margin: 0px;         }
  .paginator a         {             border: solid 1px #ccc;             color: #0063dc;             cursor: pointer;             text-decoration: none;         }         .paginator a:visited         {             padding: 1px 6px;             border: solid 1px #ddd;             background: #fff;             text-decoration: none;         }         .paginator .cpb         {             border: 1px solid #F50;             font-weight: 700;             color: #F50;             background-color: #ffeee5;         }         .paginator a:hover         {             border: solid 1px #F50;             color: #f60;             text-decoration: none;         }         .paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover         {             float: left;             height: 16px;             line-height: 16px;             min-width: 10px;             _width: 10px;             margin-right: 5px;             text-align: center;             white-space: nowrap;             font-size: 12px;             font-family: Arial,SimSun;             padding: 0 3px;         }     </style>