Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418677
  • 博文数量: 66
  • 博客积分: 1416
  • 博客等级: 上尉
  • 技术积分: 922
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-16 10:37
个人简介

高級Oracle DBA,善長Linux系統維運以及Oracle數據庫管理,開發,調優. 具有多年PL/SQL開發經驗.

文章分类

全部博文(66)

文章存档

2015年(9)

2014年(4)

2013年(5)

2010年(1)

2009年(3)

2008年(6)

2007年(30)

2006年(8)

我的朋友

分类: Oracle

2014-12-13 22:09:44

我的工作中, 常常需要生成各种html报表,然后用Oracle Scheduler job排程发送给用户.
生成html有很多是重复的代码.

利用该通用函数,可写好sql后, 直接生成报告.
然后加上html头部,尾部即可直接利用mail包发送.

原理.
1. oracle的dbms_xmlgen可以将sys_refcursor生成xml数据.
2. 该package可同时利用xslt转换数据.

点击(此处)折叠或打开

  1. function get_htmltable(p_cur sys_refcursor) return clob is
  2.   ctx DBMS_XMLGEN.ctxhandle;
  3.   xml CLOB;

  4.   v_xslt clob := q'#



  5.    
  6.       

  7.         
  8.           

  9.         
  10.       

  11.         
  12.      
  13.          

  14.            
  15.              

  16.            
  17.          

  18.      
  19.    



  20. #';

  21. BEGIN
  22.   ctx := DBMS_XMLGEN.newcontext (p_cur);
  23.   DBMS_XMLGEN.setxslt (ctx, v_xslt);
  24. --该xslt转换必须要 dbms_xmlgen.setnullhandling(ctx,2);
  25. --否则生成的xml会丢弃null栏位,
  26.   dbms_xmlgen.setnullhandling(ctx,2);
  27.   xml := DBMS_XMLGEN.getxml (ctx, 2);
  28.   DBMS_XMLGEN.closecontext (ctx);
  29.   return xml;
  30. end;

       阿飞
       2014/12/13
阅读(2284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~