存储过程:
 
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>