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.pswp.cn/news/443499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443499.shtml
英文地址,請注明出處:http://en.pswp.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…