Oracle中通过:触发器,存储过程,Function调用实现解析Clob字段类型中存储的xml字符串...

摘要:最近项目中用到了存储过程,触发器,Function,由于以前没怎么用过,所以查资料,请教同事,最后总算是把问题解决了,问题是这样的,数据库中有三张表一张是存放从远程服务器获取数据的MBINMSGS表,这个表里面有个Clob字段,里面存放的是xml格式的字符串,我们要把这个表里面的xml字符串通过Oracle解析出来,然后再把解析出来的数据插入对应的数据表:TB_CMS_FLGTINFO_A表和TB_CMS_FLGTINFO_D表,以上就是问题的描述,下面我把我的代码贴出了,以供大家参考:

一:数据表结构SQL

CREATE TABLE MIP.MBINMSGS
(ID                            NUMBER(30)      NOT NULL,MBINMSGS_CLOB_MSG             CLOB,MBINMSGS_DATE_RECEIVED        DATE,MBINMSGS_DATE_PROCESSED       DATE,MBINMSGS_SUBSYSTEM_NAME       VARCHAR2(100 BYTE),MBINMSGS_SUBSYSTEM_DATE_SENT  DATE,SERVICENAME                   VARCHAR2(30 BYTE) NOT NULL
)

CREATE TABLE MIP.TB_CMS_FLGTINFO_A
(ID       NUMBER(10)                           NOT NULL,ABNS     VARCHAR2(64 BYTE),ACFT     VARCHAR2(64 BYTE),AIRLINE  VARCHAR2(64 BYTE),ALAP     VARCHAR2(64 BYTE),BETM     VARCHAR2(64 BYTE),CHDT     VARCHAR2(64 BYTE),EIBT     VARCHAR2(64 BYTE),FATA     VARCHAR2(64 BYTE),FETA     VARCHAR2(64 BYTE),FFID     VARCHAR2(64 BYTE),FSTA     VARCHAR2(64 BYTE),LMDT     VARCHAR2(64 BYTE),LMUR     VARCHAR2(64 BYTE),PSTM     VARCHAR2(64 BYTE),RENO     VARCHAR2(64 BYTE),RWAY     VARCHAR2(64 BYTE),SPOT     VARCHAR2(64 BYTE),STND     VARCHAR2(64 BYTE)
)

CREATE TABLE MIP.TB_CMS_FLGTINFO_D
(ID         NUMBER(10)                         NOT NULL,A_TOBT     VARCHAR2(64 BYTE),A_WEATHER  VARCHAR2(64 BYTE),ABNS       VARCHAR2(64 BYTE),ACFT       VARCHAR2(64 BYTE),AIRLINE    VARCHAR2(64 BYTE),ASAT       VARCHAR2(64 BYTE),BCTM       VARCHAR2(64 BYTE),BOTM       VARCHAR2(64 BYTE),BSTM       VARCHAR2(64 BYTE),C_TOBT     VARCHAR2(64 BYTE),COBT       VARCHAR2(64 BYTE),CTOT       VARCHAR2(64 BYTE),DINT       VARCHAR2(64 BYTE),DLAB       VARCHAR2(64 BYTE),DNAP       VARCHAR2(64 BYTE),DOUT       VARCHAR2(64 BYTE),EDDI       VARCHAR2(64 BYTE),EOBT       VARCHAR2(64 BYTE),EPGT       VARCHAR2(64 BYTE),EPOT       VARCHAR2(64 BYTE),FATD       VARCHAR2(64 BYTE),FFID       VARCHAR2(64 BYTE),FSTD       VARCHAR2(64 BYTE),LMDT       VARCHAR2(64 BYTE),LMUR       VARCHAR2(64 BYTE),OFTM       VARCHAR2(64 BYTE),RENO       VARCHAR2(64 BYTE),RWAY       VARCHAR2(64 BYTE),STDI       VARCHAR2(64 BYTE),STND       VARCHAR2(64 BYTE),TSAT       VARCHAR2(64 BYTE)
)


二:Function.SQL

CREATE OR REPLACE FUNCTION MIP.GetXmlNodeValue (xmlStr CLOB, nodeName VARCHAR2)RETURN VARCHAR2
IS--创建xml解析器实例xmlparser.ParserxmlPar        xmlparser.Parser := xmlparser.newParser;--定义DOM文档xDoc          xmldom.DOMDocument;--定义item子节点数目变量lenItme       INTEGER;--定义节点列表,存放item节点们itemNodes     xmldom.DOMNodeList;--定义节点,存放单个item节点itemNode      xmldom.DOMNode;ValueReturn   VARCHAR2 (100);
BEGIN--解析xmlStr中xml字符串,并存放到xmlPar中xmlparser.parseClob (xmlPar, xmlStr);--将xmlPar中的数据转存到dom文档中xDoc := xmlparser.getDocument (xmlPar);xmlparser.freeParser (xmlPar);                             --释放解析器实例--获取所有item节点itemNodes := xmldom.getElementsByTagName (xDoc, nodeName);--获取item节点的个数lenItme := xmldom.getLength (itemNodes);IF lenItme = 0THENRETURN '';END IF;--获取节点列表中的第1个item节点itemNode := xmldom.item (itemNodes, 0);--获取所有子节点的值ValueReturn := xmldom.getNodeValue (xmldom.getFirstChild (itemNode));RETURN ValueReturn;
END GetXmlNodeValue;
/


三:存储过程.SQL

CREATE OR REPLACE PROCEDURE MIP.MIP_PARSE (xmlStr IN CLOB)
ISRENO     VARCHAR2 (100);AIRLINE  VARCHAR2 (100);FFID     VARCHAR2 (100);FFID_A   VARCHAR2 (100);FFID_D   VARCHAR2 (100);ABNS     VARCHAR2 (100);ACFT     VARCHAR2 (100);CHDT     VARCHAR2 (100);EIBT     VARCHAR2 (100);FATA     VARCHAR2 (100);FETA     VARCHAR2 (100);--FFID     VARCHAR2 (100);FSTA     VARCHAR2 (100);LMDT     VARCHAR2 (100);LMUR     VARCHAR2 (100);PSTM     VARCHAR2 (100);RWAY     VARCHAR2 (100);SPOT     VARCHAR2 (100);STND     VARCHAR2 (100);A_TOBT   VARCHAR2 (100);A_WEATHER     VARCHAR2 (100);--ABNS     VARCHAR2 (100);--ACFT     VARCHAR2 (100);ASAT     VARCHAR2 (100);BCTM     VARCHAR2 (100);BOTM     VARCHAR2 (100);BSTM     VARCHAR2 (100);C_TOBT   VARCHAR2 (100);COBT     VARCHAR2 (100);CTOT     VARCHAR2 (100);DINT     VARCHAR2 (100);DLAB     VARCHAR2 (100);DOUT     VARCHAR2 (100);EDDI     VARCHAR2 (100);EOBT     VARCHAR2 (100);EPGT     VARCHAR2 (100);EPOT     VARCHAR2 (100);FATD     VARCHAR2 (100);--FFID     VARCHAR2 (100);FSTD     VARCHAR2 (100);--LMDT     VARCHAR2 (100);--LMUR     VARCHAR2 (100);OFTM     VARCHAR2 (100);--RENO     VARCHAR2 (100);--RWAY     VARCHAR2 (100);STDI     VARCHAR2 (100);--STND     VARCHAR2 (100);TSAT     VARCHAR2 (100);BEGINRENO := GetXmlNodeValue (xmlStr, 'RENO');AIRLINE := GetXmlNodeValue (xmlStr, 'AIRLINE');FFID := GetXmlNodeValue (xmlStr, 'FFID');ABNS := GetXmlNodeValue (xmlStr, 'ABNS');ACFT := GetXmlNodeValue (xmlStr, 'ACFT');CHDT := GetXmlNodeValue (xmlStr, 'CHDT');EIBT := GetXmlNodeValue (xmlStr, 'EIBT');FATA := GetXmlNodeValue (xmlStr, 'FATA');FETA := GetXmlNodeValue (xmlStr, 'FETA');FFID := GetXmlNodeValue (xmlStr, 'FFID');FSTA := GetXmlNodeValue (xmlStr, 'FSTA');LMDT := GetXmlNodeValue (xmlStr, 'LMDT');LMUR := GetXmlNodeValue (xmlStr, 'LMUR');PSTM := GetXmlNodeValue (xmlStr, 'PSTM');RWAY := GetXmlNodeValue (xmlStr, 'RWAY');SPOT := GetXmlNodeValue (xmlStr, 'SPOT');STND := GetXmlNodeValue (xmlStr, 'STND');A_TOBT := GetXmlNodeValue (xmlStr, 'A_TOBT');A_WEATHER := GetXmlNodeValue (xmlStr, 'A_WEATHER');--ABNS := GetXmlNodeValue (xmlStr, 'ABNS');--ACFT := GetXmlNodeValue (xmlStr, 'ACFT');ASAT := GetXmlNodeValue (xmlStr, 'ASAT');BCTM := GetXmlNodeValue (xmlStr, 'BCTM');BOTM := GetXmlNodeValue (xmlStr, 'BOTM');BSTM := GetXmlNodeValue (xmlStr, 'BSTM');C_TOBT := GetXmlNodeValue (xmlStr, 'C_TOBT');COBT := GetXmlNodeValue (xmlStr, 'COBT');CTOT := GetXmlNodeValue (xmlStr, 'CTOT');DINT := GetXmlNodeValue (xmlStr, 'DINT');DLAB := GetXmlNodeValue (xmlStr, 'DLAB');DOUT := GetXmlNodeValue (xmlStr, 'DOUT');EDDI := GetXmlNodeValue (xmlStr, 'EDDI');EOBT := GetXmlNodeValue (xmlStr, 'EOBT');EPGT := GetXmlNodeValue (xmlStr, 'EPGT');EPOT := GetXmlNodeValue (xmlStr, 'EPOT');FATD := GetXmlNodeValue (xmlStr, 'FATD');FSTD := GetXmlNodeValue (xmlStr, 'FSTD');--LMDT := GetXmlNodeValue (xmlStr, 'LMDT');--LMUR := GetXmlNodeValue (xmlStr, 'LMUR');OFTM := GetXmlNodeValue (xmlStr, 'OFTM');STDI := GetXmlNodeValue (xmlStr, 'STDI');TSAT := GetXmlNodeValue (xmlStr, 'TSAT');IF INSTR(FFID,'-D-') > 0 THENFFID_D := FFID;INSERT INTO TB_CMS_FLGTINFO_D (ID,A_TOBT,A_WEATHER,ABNS,ACFT,AIRLINE,ASAT,BCTM,BOTM,BSTM,C_TOBT,COBT,CTOT,DINT,DLAB,DOUT,EDDI,EOBT,EPGT,EPOT,FATD,FFID,FSTD,LMDT,LMUR,OFTM,RENO,RWAY,STDI,STND,TSAT)VALUES   (FLGTINFO_D_SEQ.NEXTVAL,A_TOBT,A_WEATHER,ABNS,ACFT,AIRLINE,ASAT,BCTM,BOTM,BSTM,C_TOBT,COBT,CTOT,DINT,DLAB,DOUT,EDDI,EOBT,EPGT,EPOT,FATD,FFID_D,FSTD,LMDT,LMUR,OFTM,RENO,RWAY,STDI,STND,TSAT);ELSEFFID_A := FFID; INSERT INTO TB_CMS_FLGTINFO_A (ID,ABNS,ACFT,AIRLINE,CHDT,FFID,RENO,EIBT,FATA,FETA,FSTA,LMDT,LMUR,PSTM,RWAY,SPOT,STND)VALUES   (FLGTINFO_A_SEQ.NEXTVAL,ABNS,ACFT,AIRLINE,CHDT,FFID_A,RENO,EIBT,FATA,FETA,FSTA,LMDT,LMUR,PSTM,RWAY,SPOT,STND);END IF;COMMIT;
EXCEPTIONWHEN OTHERSTHENDBMS_OUTPUT.PUT_LINE (SQLERRM);
END MIP_PARSE;
/


四:触发器.SQL

DROP TRIGGER MIP.COPY_MIPDATA_TRIGGER;CREATE OR REPLACE TRIGGER MIP.COPY_MIPDATA_TRIGGERAFTER INSERTON MIP.MBINMSGS    FOR EACH ROW
DECLARE
-- LOCAL VARIABLES HERE
BEGINMIP_PARSE (:NEW.MBINMSGS_CLOB_MSG);
END COPY_MIPDATA_TRIGGER;
/


五:最后把所有的Function,存储过程,触发器都编译一下,就可以执行了,执行过程是:给表MBINMSGS中每插入一条数据,触发器就触发存储过程,存储过程再调用Function,最后把解析出来的xml字符串插入到对应的数据表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

plc采用计算机结构如何理解,PLC的基本结构

plc实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同.a. 中央处理单元(CPU)中央处理单元(CPU)是PLC的控制中枢。它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据;检查电源、存储器、I/O以及警戒定时器…

华为手机怎么用计算机玩隐藏空间,玩法 | 华为手机这五个隐藏功能,用过的都说好!...

原标题:玩法 | 华为手机这五个隐藏功能,用过的都说好!欢迎转载,请注明出处,抄袭必究!近年来国产手机都很争气,华为、小米、OPPO、vivo都迅速的成长起来,让大家告别了疯抢苹果的时代。…

Html做文章查看上一篇下一篇功能,SDCMS文章添加上一篇、下一篇

SDCMS是一款小型ASP内容管理系统管理开源程序,虽然是小型的,但是主要功能都俱备。在细节方面,该款开源程序没有对内置标签进行统一的管理,不方便日后功能的修改,如果需要修改或者添加,需要去官方网站上查阅…

微型计算机简化结构,基于FPGA的简易微型计算机结构分析与实现

0 引言通常,人们对微型计算机的工作原理及硬件结构的了解来源于书本知识,深入理解掌握其功能特点比较困难,要自己亲手去做一个类似功能的微型计算机更是不可能。随着可编程逻辑器件的广泛应用,为数字系统的设计带来了极大的灵活性…

django 返回ajax html,Django 前台通过json 取出后台数据

前台通过json 取出后台数据步骤1:后台数据通过 JSON 序列化成字符串注意:1、json是1个字符串2、通过json.dumps(xxx) 序列化成 1个字符串的 字典对象views.pydef ajax(request):if request.methodPOST:print(request.POST)data{status:0,msg:请求成功,data:[11,22,3…

Toad for Oracle 导入MIP.dmp文件时:报内存不足时的解决办法:

摘要:最近在使用Oracle数据库开发项目,其中在用Toad for Oracle连接操作Oracle11g的时候出现了问题,问题是这样的:在数据库管理员的连接下导入已经建立的用户的dmp文件,会报内存不足的问题,最后经查&#x…

长春金桥计算机学校,金桥学校2017年招生简章

原标题:金桥学校2017年招生简章金桥学校创建于2000年5月,现有45个教学班,在校学生2700余人。近年来,学校以“培养高素质的现代中国人”为办学目标,坚持“德育为首、做人第一”的办学理念,积极改革创新&…

计算机联锁软件毕设论文,铁路信号计算机联锁系统()毕设论文.doc

铁路信号计算机联锁系统()毕设论文PAGE北京交通大学信号10级毕业论文题 目 微机联锁系统故障及处理分析专 业 铁道信号班 级 10信号姓 名 陈 勇二0一二 年 七 月摘 要计算机联锁系统是实现铁路现代化和自动化的基础设施之一,是一种高效、安全的车站联锁设备&#xf…

工业炉温度计算机控制系统,热处理工业炉计算机控制系统组态王+PLC)

品牌景欣型号Autocarb工作电压220V(V)输出频率50(kHz)产品认证已认证jsj型可控气氛工艺过程计算机集散控制系统,由上位工业控制计算机或者工作站,下位由智能数显温度控制仪表,智能可编程碳势控制仪表,嵌入式控制仪表,p…

集装箱计算机跟踪管理方式,集装箱总复习

国际集装箱运输与多式联运第一章一、名词解释1、集装箱运输:就是将货物装在集装箱内,以集装箱作为一个货物集合或成组单元,进行运输、装卸、搬运的运输工艺和运输组织形式。2、集装箱运输系统:是指集装箱运输全过程所涉及的各个环…

计算机技术与通讯,通信技术与计算机技术的融合发展

产 城 96数字应用通信技术与计算机技术的融合发展聂东辉摘要:通信在人类社会发展和进步中发挥的作用毋庸置疑。通信方式的变革和通信技术的进步在很大程度上改变了人类社会的发展进程。目前通信技术和各个行业结合越来越亲密,因此我们在未来必须要通过对…

Oracle中通过substr和instr实现截取指定字符之间的字符串:

摘要:在开发项目的过程中遇到了这样的一个问题,就是从远程服务器取到的数据中是由一段规则的字符串组成的,但是你想要的还不是这段字符串,是其中的一段字符串,那就的使用Oracle强大的函数了,我的问题是这样…

四川省中职计算机考试题,四川省计算机等级考试模拟试题(一级)

四川 计算机 等级考试 模拟 试题 一级四川省计算机等级考试一级模拟试题(一)一、单选题 (每小题选出一个最合适的答案,共40分)1、用MIPS来衡量的计算机性能指标是(C )(A)处理能力 (B)可靠性 (C)运算速度 (D)存储容量MIPS(Million Instructions Per Second)&#xff…

量子计算机模型机,物理科学:量子计算机上实现了量子人工生命模型!

物理科学:量子计算机上实现了量子人工生命模型!UPV / EHU-巴斯克地区大学的一个项目首次在量子计算机上实现了量子人工生命模型。由UPV / EHU物理化学系的Ikerbasque教授Enrique Solano领导的量子信息科学技术(QUTIS)研究小组开发了一种量子仿生协议&…

计算机系统死机,电脑总是突然死机?3 分钟教你轻松恢复 Windows

说到 Windows 系统,你想到的第一个词语是什么?如果是我的话,想到的一个词是「蓝屏」,虽然 Windows 10 经过几年的更新迭代,蓝屏的概率已经少了很多,但出现蓝屏时,总让人感叹:「还是那…

计算机lab模式适用于,计算机考证二级选择题1

看看如果设定了Rollover中某个状态的效果,则 CA.在动画面板上制作的动画适用于所有的Rollover状态B.动画不能应用在Rollover状态上C.在动画面板上制作的动画仅适用于当前的Rollover状态D.同一动画不能赋予多个Rollover…

服务器安全证书更新失败怎么回事,手机安全证书更新失败怎么回事

众所周知,手机安全证书如果失效或者过期之后是需要重新下载的,否则很多应用就不能正常的使用,可是手机安全证书更新失败也是存在的,手机安全证书更新失败怎么回事呢?了解网络安全常识,首先就要了解佰佰安全网小编就带…

Oracle中通过Function,存储过程,触发器,调用实现解析Clob字段中存在的xml字符串...

摘要:接着之前的问题,在Oracle数据库中通过Function,存储过程,触发器实现解析数据表中CLOB大数据字段中存在的xml字符串有时,有个特殊的时间字符串要在数据库格式化处理,之前解析过来的时间字符串是&#x…

安农大计算机调剂,2020年安徽农业大学硕士研究生调剂公告

各位考生:为鼓励优秀考生调剂报考我校,根据我校实际情况,经研究特发布本公告。一、调剂专业二、调剂办法(一)接收调剂考生必须通过全国统一的调剂系统进行。(二)调剂系统第一次持续开放12小时后暂时关闭,学校对调剂考生的信息进行…

css布局 右固定,CSS左侧固定右侧自适应的五种布局方法

在页面或者布局列表中,常常有左侧固定,右侧自使用的情况,接下来,这五种方法满足这个需求。一、左边浮动,右边margin.box{height: 200px;background-color: skyblue;}.left{float:left;width:100px;height:200px;}.righ…