Oracle:如何将XML数据解析为数据库表中的单独列?

时间:2013-01-14 23:15:57

标签: xml database

假设我有(CLOB格式已经在数据库列中):

编辑
我想获取上述数据并将其单独插入数据库表的列中。 是否可以只为SQL语句代码制作一个相当简单的版本?

更新

set serveroutput on
DECLARE
  x XMLType := XMLType(
    '<?xml version="1.0" ?> 
<person>
   <row>
       <name>Tom</name>
       <Address>
           <State>California</State>
           <City>Los angeles</City>
       </Address>
   </row>
   <row>
       <name>Jim</name>
       <Address>
           <State>California</State>
           <City>Los angeles</City>
       </Address>
   </row>
   <row>
       <name>Jim2</name>
       <Address>
           <State>California2</State>
           <City>Los angeles2</City>
       </Address>
   </row>
</person>');


BEGIN
  FOR r IN (
    SELECT ExtractValue(Value(p),'/row/name/text()') as name
          ,ExtractValue(Value(p),'/row/Address/State/text()') as state
          ,ExtractValue(Value(p),'/row/Address/City/text()') as city
    FROM   TABLE(XMLSequence(Extract(x,'/person/row'))) p
    ) LOOP
    -- do whatever you want with r.name, r.state, r.city
    INSERT INTO example (names, state, city)
    values (r.name, r.state, r.city);
    DBMS_OUTPUT.PUT_LINE ( 'l_firstName = ' || r.name );
    DBMS_OUTPUT.PUT_LINE ( 'l_lastName = ' || r.state );
    DBMS_OUTPUT.PUT_LINE ( 'l_lastName = ' || r.city );
  END LOOP;
END;

在声明部分中,我希望能够从数据库列(report_xml)中获取该数据,而不是将xml复制并粘贴到其中。每当使用新数据更新该列时,获取它的正确语法是什么?

0 个答案:

没有答案