欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    ORACLE存储过程返回XML的处理.docx

    • 资源ID:13073833       资源大小:16.65KB        全文页数:8页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ORACLE存储过程返回XML的处理.docx

    1、ORACLE存储过程返回XML的处理目前公司的报表显示方式是:oracle返回数据集-JAVA组XML-Delphi 展现由于JAVA组XML会耗费相当多的时间和性能,从而影响客户体验考虑由oracle直接返回一个前台Delphi可解析的XML格式,从而减少JAVA组XML所带来的带宽和性能的耗费显示样式: 0 null 操作步骤:1. 设置UTL_FILE参数SQL show parameter UTL_FILE;NAME TYPE VALUE- - -utl_file_dir string 2.查看系统是以何种参数文件启动SQL show parameter spfile;NAME TYP

    2、E VALUE- - -spfile string E:ORACLEPRODUCT10.2.0DB_1DATABASESPFILEORCL.ORA3.设置UTL_FILE值(注意如果气动方式是ORA可以直接去文件里面修改)alter system set utl_file_dir=d:log scope=spfile4.重启服务查看是否设置成功SQL show parameter UTL_FILENAME TYPE VALUE- - -utl_file_dir string d:log5.授权给其他用户GRANT EXECUTE ON utl_file TO nick;6.写存储过程CREAT

    3、E OR REPLACE PROCEDURE OUTPUTPEOPLE1(sqlStr VARCHAR2, file_path VARCHAR2, files varchar2) AS personRow TB_TMPXML%ROWTYPE; -获取游标的行变量 TYPE person_cur IS REF CURSOR; -自定义REF游标 cur person_cur; tempSql varchar2(500) := SELECT * FROM dept ; -初始的查询语句 doc xmlDom.DOMDocument := xmldom.newDOMDocument; - 创建文档对

    4、象 main_node xmlDom.DOMNode := xmldom.makeNode(doc); - 获得文档节点 root_elmt xmlDom.DOMElement := xmldom.createElement(doc, Information); - 创建根元素 i number; -动态获取当前第几列 V_COLUMN_NAME varchar2(100); -动态获取当前列名字 -= -以下定义元素 code_elmt xmlDom.DOMElement; -CODE节点 descript_elmt xmlDom.DOMElement; -descript_elmt UNK

    5、NOWN_elmt xmlDom.DOMElement; -UNKNOWN_elmt resultst_elmt xmlDom.DOMElement; rs_elmt xmlDom.DOMElement; -= -以下定义节点 root_node xmlDom.DOMNode; -根 code_node xmlDom.DOMNode; -定义CODE节点 descript_node xmlDom.DOMNode; -定义CODE节点 UNKNOWN_node xmlDom.DOMNode; -UNKNOWN_node results_node xmlDom.DOMNode; rs_node x

    6、mlDom.DOMNode;BEGIN -附加查询条件 tempSql := sqlStr; select count(1) into i from all_tables d where d.TABLE_NAME = TB_TMPXML; if i 0 then execute immediate drop table TB_TMPXML; end if;-手动创建标识列tempSql:=select rownum id,d.* from (|tempSql|) d;-保存到临时表 execute immediate create table TB_TMPXML as | tempSql; -

    7、动态创建索引 execute immediate create index index_TB_TMPXML_id on TB_TMPXML(id) ; - 把Information作为根节点 root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt); -创建CODE code_elmt := xmldom.createElement(doc, CODE); - 添加到把Information作为根节点节点下 code_node := xmldom.appendChild(root_node, xmldom.mak

    8、eNode(code_elmt); code_node := xmldom.appendChild(code_node, xmlDom.makeNode(xmldom.createTextNode(doc, 0); -=- -null descript_elmt := xmldom.createElement(doc, description); - 添加到把Information作为根节点节点下 descript_node := xmldom.appendChild(root_node, xmldom.makeNode(descript_elmt); descript_node := xml

    9、dom.appendChild(descript_node, xmlDom.makeNode(xmldom.createTextNode(doc, 0); -results resultst_elmt := xmldom.createElement(doc, results); results_node := xmldom.appendChild(root_node, xmldom.makeNode(resultst_elmt); results_node := xmldom.appendChild(results_node, xmlDom.makeNode(xmldom.createText

    10、Node(doc, 0); rs_elmt := xmldom.createElement(doc, rs); rs_node := xmldom.appendChild(root_node, xmldom.makeNode(rs_elmt); -加一个属性 -向PERSON节点加入属性PERSONID xmlDom.SETATTRIBUTE(rs_elmt, PERSONID, recordset); xmlDom.SETATTRIBUTE(rs_elmt, tbname, UNKNOWN); xmlDom.SETATTRIBUTE(rs_elmt, fields, | files | );

    11、 -打开游标 OPEN cur FOR select * from TB_TMPXML; -遍历游标 LOOP FETCH cur INTO personRow; EXIT WHEN cur%NOTFOUND; -添加UNKNOWN_node UNKNOWN_elmt := xmldom.createElement(doc, UNKNOWN); UNKNOWN_node := xmldom.appendChild(rs_node, xmldom.makeNode(UNKNOWN_elmt); - xmlDom.SETATTRIBUTE(UNKNOWN_elmt, PERSONID,person

    12、Row.D_ID); -循环添加属性 i := 2; for cur in (SELECT REGEXP_SUBSTR(files, +, 1, l_count) AS nodename FROM dual, (SELECT LEVEL l_count FROM DUAL CONNECT BY LEVEL = 100) WHERE l_count = LENGTH(files) - LENGTH(REPLACE(files, ) + 1) loop -获取当前行的列名 execute immediate select COLUMN_NAME from user_tab_cols d where

    13、 d.TABLE_NAME=TB_TMPXML and d.COLUMN_ID= | i | into V_COLUMN_NAME; tempSql := select | V_COLUMN_NAME | from tb_tmpxml where id=|personRow.id; execute immediate tempSql into V_COLUMN_NAME; xmlDom.SETATTRIBUTE(UNKNOWN_elmt, (substr(cur.nodename, 0, instr(cur.nodename, :) - 1), V_COLUMN_NAME); i := i + 1; end loop; END LOOP; CLOSE cur; -写入硬盘 - xmlDom.writeToFile(doc,file_path,GBK); xmlDom.writeToFile(doc, d:log | / | qudjdian.xml, GBK);EXCEPTION WHEN OTHERS THEN DBMS_output.PUT_LINE(SQLERRM);END OUTPUTPEOPLE1;/


    注意事项

    本文(ORACLE存储过程返回XML的处理.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开