2016-11-21 25 views
0

我是XML和XML Schema的新手。 我想從下面的XML中提取客戶ID和客戶名稱,將這兩個值傳遞給PL/SQL過程。 你能幫我解決嗎? 在此先感謝。將XML和XSD加載到oracle表中並從表中提取值

XML: 

<?xml version="1.0" encoding="UTF-8"?> 
-<ns0:NewConnection xmlns:ns0="http://xyz.co.uk/cust"> 
<Customer>SA02121</Customer> 
<Customer name>John</Customer name> 
<Load Date>2016-11-09</Load Date> 
<Load Time>03:40:12</Load Time> 
</ns0:NewConnection> 
+0

這個xml從哪裏來?它是從表中選擇的(實際上你正在循環多行),還是一個傳入pl/sql過程的單個xml文檔? – Boneist

+0

它來自SAP。它是一行單個XML文檔。 – OraDev001

回答

1

您的xml不是xml。 :)

XML命名規則 XML元素必須遵循以下命名規則:

  • 元素名稱是區分大小寫的
  • 元素名稱必須以字母開頭或下劃線
  • 元素名稱不能以啓動元素名稱可以包含字母,數字,連字符,下劃線和句點
  • 個元素名稱中不能包含空格

如果在你的標籤下劃線代替sapces。您可以使用xmltabel獲取數據。

 select * 
     from xmltable(xmlnamespaces('http://xyz.co.uk/cust' as "ns0"), '/ns0:NewConnection' 
         passing xmltype('<?xml version="1.0" encoding="UTF-8"?> 
<ns0:NewConnection xmlns:ns0="http://xyz.co.uk/cust"> 
<Customer>SA02121</Customer> 
<Customer_name>John</Customer_name> 
<Load_Date>2016-11-09</Load_Date> 
<Load_Time>03:40:12</Load_Time> 
</ns0:NewConnection>') 
         columns Customer varchar2(200) path 'Customer' 
          , Customer_name varchar2(200) path 'Customer_name' 
          , Load_Date varchar2(200) path 'Load_Date' 
          , Load_Time varchar2(200) path 'Load_Time')