2016-03-07 19 views
2

是否可以在XML數據庫中的XML中插入新標籤?在xmlDB中以XML格式插入新標籤

例如;下面是我的例子是存在於數據庫中:

<PurchaseOrder 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation= 
    "http://localhost:8080/source/schemas/poSource/xsd/purchaseOrder.xsd"> 
    <Reference>SBELL-2002100912333601PDT</Reference> 
    <Actions> 
    <Action> 
     <User>SVOLLMAN</User> 
    </Action> 
    </Actions> 
    <Reject/> 
    <Requestor>Sarah J. Bell</Requestor> 
    <User>SBELL</User> 
    <CostCenter>S30</CostCenter> 
    <SpecialInstructions>Air Mail</SpecialInstructions> 
    <LineItems> 
    <LineItem ItemNumber="1"> 
     <Description>A Night to Remember</Description> 
     <Part Id="715515009058" UnitPrice="39.95" Quantity="2"/> 
    </LineItem> 
    </LineItems> 
</PurchaseOrder> 

我需要插入新的標籤<sender>xxxx</sender>其中<costCente>爲「S30」。

插入/更新XML後,它應該是象下面這樣:

<PurchaseOrder 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation= 
    "http://localhost:8080/source/schemas/poSource/xsd/purchaseOrder.xsd"> 
    <Reference>SBELL-2002100912333601PDT</Reference> 
    <sender>xxx</sender> 
    <Actions> 
    <Action> 
     <User>SVOLLMAN</User> 
    </Action> 
    </Actions> 
    <Reject/> 
    <Requestor>Sarah J. Bell</Requestor> 
    <User>SBELL</User> 
    <CostCenter>S30</CostCenter> 
    <SpecialInstructions>Air Mail</SpecialInstructions> 
    <LineItems> 
    <LineItem ItemNumber="1"> 
     <Description>A Night to Remember</Description> 
     <Part Id="715515009058" UnitPrice="39.95" Quantity="2"/> 
    </LineItem> 
    </LineItems> 
</PurchaseOrder> 

難道真的有一個可能的方案?

任何一個可以給我查詢來做到這一點,如果可能的話。

在此先感謝。

回答

0

下面的查詢爲我工作。

UPDATE TABLENAME dd SET dd.object_value = 
insertXMLbefore(dd.object_value, 
'/c:PurchaseOrder/c:Reference', 
XMLType('<d:sender xmlns:d="http://www.w3.org/2001/XMLSchema-instance">XXXX</d:sender>'), 
xmlns:c="http://www.w3.org/2001/XMLSchema-instance"') 
WHERE dd.id in (SELECT dd.id FROM TABLENAME dd,XMLTable(XMLNAMESPACES(
DEFAULT 'http://www.w3.org/2001/XMLSchema-instance' AS "c"), 
'/PurchaseOrder' PASSING dd.object_value COLUMNS sender VARCHAR2(8 CHAR) PATH 'c:PurchaseOrder/c:Reference/text()', 
rp VARCHAR2(8 CHAR) PATH 'CostCenter/text()') li 
WHERE sender is null and rp = 'S30');