Oracle中通過Function,存儲過程,觸發器,調用實現解析Clob字段中存在的xml字符串...

摘要:接著之前的問題,在Oracle數據庫中通過Function,存儲過程,觸發器實現解析數據表中CLOB大數據字段中存在的xml字符串有時,有個特殊的時間字符串要在數據庫格式化處理,之前解析過來的時間字符串是,比如:11OCT141024表示:(日月年時分),這是一種不規則的時間格式,我們要把它格式化成:(年-月-日 時:分)這樣的格式,就的再另外寫個Function來特殊處理了,下面我把我的方法寫上,關于Oracle中解析Clob字段中的xml字符串的方式請看上一篇博客,地址:http://blog.csdn.net/sxdtzhaoxinguo/article/details/40052783


一:Function.SQL:

CREATE OR REPLACE FUNCTION MIP.FormatDateValue (key VARCHAR2, value VARCHAR2)RETURN VARCHAR2
IS--定義幾個變量,出來解析過來的時間字符串--日月年時分(11OCT141024)AA       VARCHAR2(32);DAY      VARCHAR2(32);MOUNTH   VARCHAR2(32);YEAR     VARCHAR2(32);HOUR     VARCHAR2(32);MINUTE   VARCHAR2(32);ValueReturn   VARCHAR2 (100);BEGINIF key IS NULL THEN ValueReturn := NULL;RETURN ValueReturn;ELSEDAY := SUBSTR(key,0,2);MOUNTH := SUBSTR(key,3,3);IF INSTR (MOUNTH,'JAN') > 0 THENMOUNTH := 01;END IF;IF INSTR (MOUNTH,'FEB') > 0 THENMOUNTH := 02;END IF;IF INSTR (MOUNTH,'MAR') > 0 THENMOUNTH := 03;END IF;IF INSTR (MOUNTH,'APR') > 0 THENMOUNTH := 04;END IF;IF INSTR (MOUNTH,'MAY') > 0 THENMOUNTH := 05;END IF;IF INSTR (MOUNTH,'JUN') > 0 THENMOUNTH := 06;END IF;IF INSTR (MOUNTH,'JUL') > 0 THENMOUNTH := 07;END IF;IF INSTR (MOUNTH,'AUG') > 0 THENMOUNTH := 08;END IF;IF INSTR (MOUNTH,'SEP') > 0 THENMOUNTH := 09;END IF;IF INSTR (MOUNTH,'OCT') > 0 THENMOUNTH := 10;END IF;IF INSTR (MOUNTH,'NOV') > 0 THENMOUNTH := 11;END IF;IF INSTR (MOUNTH,'DEC') > 0 THENMOUNTH := 12;END IF;YEAR := SUBSTR(key,6,2);HOUR := SUBSTR(key,8,2);MINUTE := SUBSTR(key,-2);AA := 20;--日月年時分(11OCT141017)ValueReturn := AA || YEAR || '-' || MOUNTH || '-' || DAY || ' ' || HOUR || ':' || MINUTE;RETURN ValueReturn;END IF;END FormatDateValue;
/

二:存儲過程.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);--定義出港信息表要格式的時間字段A_TOBT_D VARCHAR2 (100);ASAT_D   VARCHAR2 (100);BCTM_D   VARCHAR2 (100);BOTM_D   VARCHAR2 (100);BSTM_D   VARCHAR2 (100);C_TOBT_D VARCHAR2 (100);COBT_D   VARCHAR2 (100);CTOT_D   VARCHAR2 (100);DINT_D   VARCHAR2 (100);DOUT_D   VARCHAR2 (100);EDDI_D   VARCHAR2 (100);EOBT_D   VARCHAR2 (100);EPGT_D   VARCHAR2 (100);EPOT_D   VARCHAR2 (100);FATD_D   VARCHAR2 (100);FSTD_D   VARCHAR2 (100);LMDT_D   VARCHAR2 (100);OFTM_D   VARCHAR2 (100);STDI_D   VARCHAR2 (100);TSAT_D   VARCHAR2 (100);--定義進港信息表要格式化的時間字段EIBT_A  VARCHAR2 (100);FATA_A  VARCHAR2 (100);FETA_A  VARCHAR2 (100);FSTA_A  VARCHAR2 (100);LMDT_A  VARCHAR2 (100);PSTM_A  VARCHAR2 (100);SPOT_A  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');--出港信息表中時間字段的時間格式函數的用法A_TOBT_D := FORMATDATEVALUE (A_TOBT, 'A_TOBT_D');ASAT_D := FORMATDATEVALUE (ASAT, 'ASAT_D');BCTM_D := FORMATDATEVALUE (BCTM, 'BCTM_D');BOTM_D := FORMATDATEVALUE (BOTM, 'BOTM_D');BSTM_D := FORMATDATEVALUE (BSTM, 'BSTM_D');C_TOBT_D := FORMATDATEVALUE (C_TOBT, 'C_TOBT_D');COBT_D := FORMATDATEVALUE (COBT, 'COBT_D');CTOT_D := FORMATDATEVALUE (CTOT, 'CTOT_D');DINT_D := FORMATDATEVALUE (DINT, 'DINT_D');DOUT_D := FORMATDATEVALUE (DOUT, 'DOUT_D');EDDI_D := FORMATDATEVALUE (EDDI, 'EDDI_D');EOBT_D := FORMATDATEVALUE (EOBT, 'EOBT_D');EPGT_D := FORMATDATEVALUE (EPGT, 'EPGT_D');EPOT_D := FORMATDATEVALUE (EPOT, 'EPOT_D');FATD_D := FORMATDATEVALUE (FATD, 'FATD_D');FSTD_D := FORMATDATEVALUE (FSTD, 'FSTD_D');LMDT_D := FORMATDATEVALUE (LMDT, 'LMDT_D');OFTM_D := FORMATDATEVALUE (OFTM, 'OFTM_D');STDI_D := FORMATDATEVALUE (STDI, 'STDI_D');TSAT_D := FORMATDATEVALUE (TSAT, 'TSAT_D');--進港信息表中時間字段的時間格式函數的用法EIBT_A := FORMATDATEVALUE (EIBT, 'EIBT_A');FATA_A := FORMATDATEVALUE (FATA, 'FATA_A');FETA_A := FORMATDATEVALUE (FETA, 'FETA_A');FSTA_A := FORMATDATEVALUE (FSTA, 'FSTA_A');LMDT_A := FORMATDATEVALUE (LMDT, 'LMDT_A');PSTM_A := FORMATDATEVALUE (PSTM, 'PSTM_A');SPOT_A := FORMATDATEVALUE (SPOT, 'SPOT_A');IF INSTR(FFID,'-D-') > 0 THEN--FFID_D := FFID;--截取航班號FFID_D := SUBSTR(FFID,INSTR(FFID,'-',1)+1,INSTR(FFID,'-',INSTR(FFID,'-',1)+1)-INSTR(FFID,'-',1)-1);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_D,A_WEATHER,ABNS,ACFT,AIRLINE,ASAT_D,BCTM_D,BOTM_D,BSTM_D,C_TOBT_D,COBT_D,CTOT_D,DINT_D,DLAB,DOUT_D,EDDI_D,EOBT_D,EPGT_D,EPOT_D,FATD_D,FFID_D,FSTD_D,LMDT_D,LMUR,OFTM_D,RENO,RWAY,STDI_D,STND,TSAT_D);ELSE--FFID_A := FFID;FFID_A := SUBSTR(FFID,INSTR(FFID,'-',1)+1,INSTR(FFID,'-',INSTR(FFID,'-',1)+1)-INSTR(FFID,'-',1)-1);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_A,FATA_A,FETA_A,FSTA_A,LMDT_A,LMUR,PSTM_A,RWAY,SPOT_A,STND);END IF;COMMIT;
EXCEPTIONWHEN OTHERSTHENDBMS_OUTPUT.PUT_LINE (SQLERRM);
END MIP_PARSE;
/

三:以上就是改進后的sql語句;


四:詳情請看:http://blog.csdn.net/sxdtzhaoxinguo/article/details/40052783


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443481.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安農大計算機調劑,2020年安徽農業大學碩士研究生調劑公告

各位考生:為鼓勵優秀考生調劑報考我校,根據我校實際情況,經研究特發布本公告。一、調劑專業二、調劑辦法(一)接收調劑考生必須通過全國統一的調劑系統進行。(二)調劑系統第一次持續開放12小時后暫時關閉,學校對調劑考生的信息進行…

css布局 右固定,CSS左側固定右側自適應的五種布局方法

在頁面或者布局列表中,常常有左側固定,右側自使用的情況,接下來,這五種方法滿足這個需求。一、左邊浮動,右邊margin.box{height: 200px;background-color: skyblue;}.left{float:left;width:100px;height:200px;}.righ…

css現在還用浮動嗎,css3-9 css中的浮動怎么使用

css3-9 css中的浮動怎么使用一、總結一句話總結:用來做一般的行效果,比如說手機左右分布的頭部導航欄。浮動的東西放到一個div中去,里面的內容根據需求左浮動或者右浮動,然后記得加上清除浮動。然后這整個div就是一個整體了。1、c…

ajax對日期處理,AJAX獲取服務器當前時間及時間格式輸出處理

AJAX獲取服務器當前時間------------------------------ WebService1.asmx----------------------------------// 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。[System.Web.Script.Services.ScriptService]public class WebService1 : …

wif檢測到DNS服務器未響應,hiwifi(極路由)恢復出廠的設置方法

摘 要極路由(hiwifi)怎么恢復出廠設置?想把極路由恢復出廠設置,但是不知道怎么設置。極路由恢復出廠設置的操作其實非常簡單,有下面2種方式可以把極路由恢復出廠設置 1、按復位按鈕恢復出廠設置 2、登錄到極路由(hiwifi)怎么恢復出廠設置?想把…

Oracle存儲過程中如何根據指定的參數判斷該參數的值否存在數據表中:

摘要:最近項目中用到了Oracle存儲過程,所以就自己嘗試著寫了下,下面我把我遇到的問題描述一下:就是在我處理解析Clob字段中的xml字符串的時候,有個需求就是根據指定的主鍵參數,來判斷該參數的值是否已經存在…

命運2服務器維護時間2019,《命運2》今晚將停機維護 為多平臺共用存檔做準備...

原標題:《命運2》今晚將停機維護 為多平臺共用存檔做準備《命運2(Destiny 2)》將于今晚(6月27日)10點,開始12個小時的停機維護,這次維護是為支持跨平臺共享存檔做準備。如果你是今天晚上想玩會《命運2》的玩家最好來看看&#xff…

e4a服務器文件,e4a鏈接網站服務器

e4a鏈接網站服務器 內容精選換一換當您想在Internet上通過域名訪問您的網站時,可以通過華為云的云解析服務為域名添加解析記錄。例如,搭建一個網站服務器,采用IPv4格式的彈性IP地址。如果想要實現通過域名“example.com”及其子域名“www.exa…

本地網頁服務器 跨域,nodejs搭建本地服務器輕松解決跨域問題

一、使用 Node 創建 Web 服務器注:Node.js 提供了 http 模塊,http 模塊主要用于搭建 HTTP 服務端和客戶端,下面就是簡單的服務器實現過程:1、編寫服務器代碼server.js404錯誤你要找的頁面不存在);res.end();}else{//HTTP 狀態碼 2…

閑置服務器裝win10系統,求高手幫看一下我這臺閑置的老主機還能裝win10或者win8.1嗎?...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓--------[ 概覽 ]----------------------------------------------------------------------------------電腦型號 P4V8X-MX 臺式電腦操作系統 Windows 7 旗艦版 32位 SP1 ( DirectX 11 )處理器 英特爾 Celeron(賽揚) 2.93GHz主板 …

Oracle中通過存儲過程,Function,觸發器實現解析時間類型的字段并插入的對應的數據表中...

摘要:之前在項目中解決了插入字符串類型的數據,今天試著寫了一個插入date類型的字段,成功了,現在記錄一下,以便以后查看: 一:首先建立一個根據xml節點名稱獲取對應的xml值的Function.sql: CREA…

Oracle中通過Job實現定時同步兩個數據表之間的數據

摘要:之前項目中用的觸發器來實現數據解析,但是最近客戶反應,會報錯,所以我們從新設計了一下,通過Oracle里面的Job來解決這一問題,這樣就不會對原來的數據表做操作,只對臨時表操作,就…

學習筆記1-Linux1

Linux系統介紹 Linux管理硬盤的能力很強,我們一般只看到一個分區 / 根目錄 /bin 存儲系統命令 /dev 設備文件 /media 多媒體文件,U盤,光盤,共享文件夾 /proc 記錄程序運行時的資源使用情況 /sbin 存儲超級管理員使用的系統…

學習筆記2-Linux2

Ubuntu系統快捷鍵 ctrlaltt:打開終端 ctrll: 清屏 ctrlalt方向鍵:快速切換工作區域 tab:自動補全 up/down:調出指令執行記錄 alttab:切換任務重定向、管道、通配符 重定向重定向就是把命令的執行結果…

學習筆記3-C語言-基礎

C語言簡介 發展史:BCPL -> new B -> C -> Minix -> Linux -> gcc C語言誕生: 1970年~1973年,在肯.湯姆遜和丹尼斯.里奇(影響大)主導下編寫完成,歸屬美國貝爾實驗室 C語言的誕生專門用于編寫操作系統&#xf…

學習筆記4-C語言-開關、循環、跳轉

一、開關語句 switch(n) //n可以是數值、表達式,運算結果必須是整型 {case val: //必須是常量,如果val等于n,則打開開關...;break; //關閉執行開關,switch中不能與continue配合使用//如果所有的case后面都有…

JQuery,ajax異步加載selectoption/option/select多選框:

摘要&#xff1a;最近項目中用到了jquery&#xff0c;ajax&#xff0c;由于很長時間沒用了&#xff0c;所以這次做花了很多時間&#xff0c;現在記錄一下&#xff0c;方便以后回憶&#xff1a; 一&#xff1a;js文件&#xff1a; <script type"text/javascript"&…

學習筆記5-C語言-數組

數組&#xff1a; 什么是數組&#xff1a; 相同類型變量的組合,是一種批量定義變量的方式 定義&#xff1a; 類型 數組名[數組變量數量]&#xff1b;int arr[5]; 使用&#xff1a;數組名[下標]&#xff1b;arr[0];數組下標從零開始&#xff0c;范圍&#xff1a;0~數量-1 遍歷…

學習筆記6-小項目-走迷宮、推箱子

獲取方向鍵的功能&#xff1a;使用getch.h頭文件中的getch函數 1、把windows中的getch.h頭文件放到共享文件夾中 2、終端輸入 cd /media/sf_GONGXIANG進入共享文件夾 3、sudo cp getch.h /usr/include 4、cd /usr/include/ 5、sudo chmod r getch.h頭文件中的getch函數 time.h…

學習筆記7-C語言-進制轉換、原返補、位運算、函數

進制轉換 為什么要使用二、八進制、十六進制&#xff1f;因為現在的CPU只能識別高低兩種電流&#xff0c;因此只能對二進制數據進行運算二進制數據雖然可以直接被cpu識別&#xff0c;但不方便人們書寫、記錄&#xff0c;所以把二進制數據轉換成八進制是為了方便記錄在文件中。…