Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to do multiple loops through XML in PL/SQL

ORA-00904Aug 31 2013 — edited Sep 2 2013

My XML looks like this:

<data>

   <row>

     <id>1</id>

     <name>John</name>

     <name>Jack</name>

   </row>

   <row>

     <id>2</id>

     <name>Scott</name>

     <name>Chuck</name>

     <name>Kim</name>

   </row>

</data>


I would like output:

   ->1

   -->John

   -->Jack

   ->2

   -->Scott

   -->Chuck

   -->Kim



My current code looks like this:

<code>

DECLARE

   X XMLTYPE := XMLTYPE('<?xml version="1.0" ?>

<data>

   <row>

       <id>1</id>

       <name>John</name>

       <name>Jack</name>

   </row>

   <row>

       <id>2</id>

       <name>Scott</name>

       <name>Chuck</name>

       <name>Kim</name>

   </row>

</data>');

BEGIN

   FOR R IN (SELECT EXTRACTVALUE(VALUE(P), '/row/id/text()') AS ID

               FROM TABLE(XMLSEQUENCE(EXTRACT(X, '//data/row'))) P)

   LOOP

      DBMS_OUTPUT.PUT_LINE('-->' || R.id);

   END LOOP;

END;

</code>

I would need one more loop inside a row to loop through name tag, but I don't know how to do it.

A little help would be appreciated.

This post has been answered by ORA-00904 on Aug 31 2013
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 30 2013
Added on Aug 31 2013
6 comments
7,563 views