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

转载于:https://www.cnblogs.com/Chuifr/archive/2012/12/18/EnterpriseLibrary4.html

微软企业库调用Oracle分页存储过程相关推荐

  1. ASP.NET调用Oracle分页存储过程并结合ASPnetpager分页控件 实现分页功能

    之前用的是GridView自带的分页功能,那速度啊慢的真实不行  ,决定自定义分页  Oracle库里有5W多条数据 AspnetPager做的还是不错,拿过来用 Oracle 分页存储过程: cre ...

  2. 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法

    最近使用微软企业库,在做分页绑定的时候发现好象还没有多少通用的方法.为了灵活和换数据库,我不能使用存储过程.为了开发速度最快.我就是用datagrid绑定了. 以前长用的 DataAdapter.Fi ...

  3. 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  4. [EntLib]微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——上篇...

    本文是为后面的学习之路做铺垫,简单介绍下企业库中的Validation模块的一些相关知识,包括Validation模块的简介.用途.使用方法.默认提供的多种验证器的介绍等. 一.简介及用途 在实际的项 ...

  5. 基于微软企业库的AOP组件(含源码)

    软件开发,离不开对日志的操作.日志可以帮助我们查找和检测问题,比较传统的日志是在方法执行前或后,手动调用日志代码保存.但自从AOP出现后,我们就可以避免这种繁琐但又必须要实现的方式.本文是在微软企业库 ...

  6. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...

    在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码.身份证号.网站配置等,通过对信息进行加密可以保证项目数据 ...

  7. oracle ajax储存过程分页,创建 Oracle 分页存储过程

    1.创建Oracle包的定义.使用 REF CURSOR 数据类型来处理 Oracle 结果集.REF CURSOR 是一个指向 PL/SQL 查询所返回的结果集的指针.与普通的游标不同,REF CU ...

  8. (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)...

    原文地址:http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-U ...

  9. 使用Microsoft EnterpriseLibrary(微软企业库)日志组件把系统日志写入数据库和xml文件...

    这里只是说明在项目中如何配置使用微软企业库的日志组件,对数据库方面的配置请参考其他资料. 1.在项目中添加Microsoft.Practices.EnterpriseLibrary.Data.dll. ...

最新文章

  1. 关于Page翻页效果--Page View Controller
  2. Python开发【第三篇】:文件操作与函数
  3. TypeError: 'range' object doesn't support item deletion《机器学习实战》改进的随机梯度上升算法
  4. 使用VC++绘制坐标系
  5. SAP AUTHORITY-CHECK 的使用
  6. Red Hat Enterprise Linux(RHEL)中yum的repo文件详解
  7. Nandflash 驱动深度分析(基于S3C2410)
  8. Node.js之图片上传
  9. script脚本中写不写$(document).ready(function() {});的差别
  10. mysql联合查询_mysql中的联合查询
  11. java全栈开发主要工作内容,java全栈工程师
  12. Chamfer Distance--倒角距离
  13. 人工智能之旅,真的特别费人工!
  14. 批归一化作用_批归一化(Batch Normalization)
  15. python回调函数实例详解_python 简单的例子下详解回调函数
  16. Flappy Bird 恶意程序详细分析
  17. Qt写一个文档复制粘贴助手app
  18. 摄氏温度转换华氏温度_什么是摄氏温度?
  19. 树莓派 PICO基础教程(基于MicroPython)
  20. 双面小册子--WORD文档打印

热门文章

  1. (二分搜索法尺取法)subsequence
  2. 计算机专业对口升学模拟试题,2010对口升学模拟试题计算机专理论综合
  3. 频繁默认网关不可用_win10 总是默认网关不可用,怎么回事?
  4. 云联惠认证时间_云联惠强制关闭真正原因是什么?
  5. css如何调整红心样式_在JavaScript应用程序中包含CSS的多种方法「渡一」
  6. 云服务器怎么管理,第一次使用云服务器,如何使用和管理云服务器
  7. matlab 发送 126 邮件,python实现126邮箱发送邮件
  8. python正则匹配ip_[求助] 正则表达式匹配 IP 地址的问题求助
  9. c语言平面向量加法考点,平面向量的加减法怎么死活都不会?有没有什么口诀?例如:向量AB+BC=?向量OA-OB=?向量AB-CB=?有没有什么口诀!...
  10. 计算机管理内默认共享,关于Windows的默认共享介绍