Skip to Main Content

XQuery statement for where clause

Mameli75Mar 17 2022

Hello,
having following XML :
<DataArea>
<PurchaseOrder>
<PurchaseOrderHeader>
...
</PurchaseOrderHeader>
<PurchaseOrderLine>
<LineNumber>10</LineNumber>
<Item>
<ItemID>
<ID>KR350</ID>
</ItemID>
</Item>
<UserArea>
...
</UserArea>
</PurchaseOrderLine>
<PurchaseOrderLine>
<LineNumber>20</LineNumber>
<Item>
<ItemID>
<ID>KR100</ID>
</ItemID>
</Item>
<UserArea>
...
</UserArea>
</PurchaseOrderLine>
</PurchaseOrder>
</DataArea>

How can update / modify only certain lines e.g. PurchaseOrderLine\LineNumber = 20 ?
tried in this way below but it's updating any DataArea/PurchaseOrder/PurchaseOrderLine/UserArea
select XMLQuery('copy $i := $p1 modify
(for $j in $i/DataArea/PurchaseOrder/PurchaseOrderLine/UserArea where $i/DataArea/PurchaseOrder/PurchaseOrderLine/LineNumber=20
return (# ora:child-element-name Property #)
{insert node $p2 into $j})
return $i'
PASSING BOD_SPEC AS "p1",
XMLType('<Property><NameValue name="ln.ItemGroup" type="StringType">100</NameValue></Property>') AS "p2"
RETURNING CONTENT)
from ln_BOD_decoration
WHERE BOD_NAME = 'SyncPurchaseOrder2';
Thanks.
Br. Marco.

This post has been answered by Paulzip on Mar 18 2022
Jump to Answer
Comments
Post Details
Added on Mar 17 2022
3 comments
48 views