Note that there are some explanatory texts on larger screens.

plurals
  1. POIssue with creating XMLQuery for given XPATH
    primarykey
    data
    text
    <p>I have a table having one columns as XMLTYPE being stored with Object-Relational storage. Below is table ddl.</p> <pre><code>CREATE TABLE Orders ( Order_id number not null, Order_status Varchar2(100), Order_desc XMLType not null) XMLTYPE Order_desc STORE AS OBJECT RELATIONAL XMLSCHEMA "http://localhost/public/xsd/Orderstore.xsd" ELEMENT "OrderVal" ); </code></pre> <p>I have successfully registered the schema to load XSD with XML DB. Below is the XML being loaded into the XMLTYPE column.</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8" ?&gt; &lt;draftorders&gt; &lt;OrderSumm&gt; &lt;Ordercod&gt;OrderBookings&lt;/Ordercod&gt; &lt;/OrderSumm&gt; &lt;Orderattrs&gt; &lt;Orderattr Ordername="HROrder"&gt; &lt;OrderVals&gt; &lt;OrderVal&gt; &lt;listvalue&gt;Order1&lt;/listvalue&gt; &lt;Orderattrs&gt; &lt;Orderattr Ordername="Node1_Child1"&gt; &lt;OrderVals&gt; &lt;OrderVal&gt; &lt;listvalue&gt;&lt;![CDATA[ Node1_Child1_OrderValue_1]]&gt;&lt;/listvalue&gt; &lt;Orderattrs&gt; &lt;Orderattr Ordername="Node2_Child1"&gt; &lt;OrderVals&gt; &lt;OrderVal&gt; &lt;listvalue&gt;&lt;![CDATA[ Node2_Child1_OrderValue_1]]&gt;&lt;/listvalue&gt; &lt;/OrderVal&gt; &lt;/OrderVals&gt; &lt;/Orderattr&gt; &lt;Orderattr Ordername="Node2_Child2"&gt; &lt;OrderVals&gt; &lt;OrderVal&gt; &lt;listvalue&gt;&lt;![CDATA[ Node2_Child2_OrderValue_1]]&gt;&lt;/listvalue&gt; &lt;/OrderVal&gt; &lt;/OrderVals&gt; &lt;/Orderattr&gt; &lt;/Orderattrs&gt; &lt;/OrderVal&gt; &lt;/OrderVals&gt; &lt;/Orderattr&gt; &lt;/Orderattrs&gt; &lt;/OrderVal&gt; &lt;/OrderVals&gt; &lt;/Orderattr&gt; &lt;/Orderattrs&gt; &lt;/draftorders&gt; </code></pre> <p>I have the query using "extract" to print the below output:</p> <pre><code>SELECT extract(o.Order_desc,'/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/Orderattrs/Orderattr[0]/@Ordername').getStringVal() "Node1", extract(o.Order_desc,'/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/Orderattrs/Orderattr[0]/OrderVals/OrderVal[1]/listvalue/text()').getStringVal() "Node1Child", extract(o.Order_desc,'/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/Orderattrs/Orderattr[1]/@Ordername').getStringVal() "Node2", extract(c.Order_desc,'/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/listvalue/text()').getStringVal() "Node2Child" FROM Orders o; OUTPUT:- Node2_Child1 Node2_Child1_OrderValue_1 Node2_Child2 Node2_Child2_OrderValue_1 </code></pre> <p>I want to achieve the same output using XMLQuery, but I am unable to build query to print the child node. Till now, I can only print the node value using XMLQuery as given below:-</p> <pre><code>SELECT XMLQuery( '/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/Orderattrs/Orderattr[0]/@Ordername' PASSING o.Order_desc RETURNING CONTENT ) FROM Orders o; </code></pre> <p>How can I achieve the same output from using "extract", with "XMLQuery" ?</p> <p>Thanks.</p> <p>/<strong><em>*</em>**<em>*</em>****</strong> Modified query run:-</p> <pre><code>SELECT XMLQuery('//OrderVal/Orderattrs/Orderattr/(@Ordername, OrderVals/OrderVal/listvalue)/data(.)' PASSING o.Order_desc RETURNING CONTENT ) FROM Orders o; </code></pre> <p>Output:-</p> <pre><code>Node2_Child1 Node2_Child1_OrderValue_1 Node2_Child </code></pre> <p>Fetching all Nodes and its child's using XMLTABLE.</p> <pre><code>SELECT ord.OrdName, ord.OrdVal FROM Orders, XMLTable('/OrderVal[1]/Orderattrs/Orderattr[1]/OrderVals/OrderVal[1]/Orderattrs/Orderattr' PASSING Order_desc COLUMNS "OrdName" VARCHAR2(4000) PATH '@Ordername', "OrdVal" VARCHAR2(4000) PATH 'OrderVals/OrderVal[1]/listvalue') ord; </code></pre> <p>Output:-</p> <pre><code>Node2_Child1 Node2_Child1_OrderValue_1 Node2_Child2 Node2_Child2_OrderValue_1 ...... Node2_Child2500 Node2_Child2500_OrderValue_1 </code></pre> <p>How can I achieve the same using XMLQuery ??</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload