我想在Oracle中創建PL/SQL的XML文件的視圖。與該XML文件的數據內容的問題是,單個路徑常常具有多於一個的數據輸入,如下圖所示:錯誤消息ORA-19279:XPTY0004收到當試圖創建視圖,PL/SQL的XML文件
<priip>
<data>
<properties>
<priipMonitoringInterval>daily</priipMonitoringInterval>
<priipMonitoringStartDate>2017-06-30T13:51:03.168000</priipMonitoringStartDate>
<permittedKIDDownloadJurisdictions>
<item>DE</item>
<item>AT</item>
</permittedKIDDownloadJurisdictions>
</properties>
</data>
</priip>
我因此獲得其讀取的錯誤消息:
ORA -19279:XPTY0004 - XQuery的動態類型不匹配:預計單序列 - 得到了多項目序列
這裏,很顯然,問題在於路徑:
priip/data/properties/permittedKIDDownloadJurisdictions/item
,我們有兩個允許的司法管轄區,DE和AT。我不能改變原始的XML文件,我需要將文件中的所有數據將被輸入到PL/SQL視圖。我附上了我的代碼示例,顯示了我已經嘗試過的內容。
create or replace view PRIIPS_XML_VIEW as
select *
from PRIIPS_XML t,
XMLTable(
'$p/priip/data'
passing t.SYS_NC_ROWINFO$ as "p"
columns
priip_monitoring_interval varchar2(20) path 'properties/priipMonitoringInterval',
priip_monitoring_start_date varchar2(26) path 'properties/priipMonitoringStartDate',
kid_download_jurisdiction varchar2(10) path 'properties/permittedKIDDownloadJurisdictions/item'
);
任何幫助將不勝感激!
請編輯您的XML示例以使其完整有效。 – OldProgrammer
我已經這樣做了 - 但爲了簡便起見,我已經排除太多的文件的其他內容的。 –
那麼你不能有兩個元素映射到一個行/像列。你以某種方式需要「扁平」數據。項目元素的數量是否總是少於兩個?另一種可能的解決方法是使用xQuery – OldProgrammer