There is a request:

SQL> with a as (select '<a><b>1</b><b>2</b></a>' xml from dual) 2 select y.* from a, xmltable( '/a' 3 passing xmltype(a.xml) 4 columns 5 b xmltype path 'b') x, 6 xmltable('b' 7 passing xb 8 columns 9 c xmltype path '/')(+) y 10 ; C -------------------------------------------------------------------------------- <b>1</b> <b>2</b> 

returns two entries, as expected.

But if you insert xml into a temporary table and select data from it -

 SQL> create table tmp_xml as select xmltype('<a><b>1</b><b>2</b></a>') xml from dual; Table created. SQL> select y.* from tmp_xml a, xmltable( '/a' 2 passing a.xml 3 columns 4 b xmltype path 'b') x, 5 xmltable('b' 6 passing xb 7 columns 8 c xmltype path '/')(+) y 9 ; C -------------------------------------------------------------------------------- 

output null. What is wrong with the request? Oracle Database 11g Enterprise Edition 11.2.0.3.0 - 64bit Production

  • In the first request, the field type a.xml is string; in the second, it is not. Why? - Akina
  • can be like this with a as (select xmltype ('<a> <b> 1 </ b> <b> 2 </ b> </a>') xml from dual) select y. * from a, xmltable (' / a 'passing a.xml columns b xmltype path' b ') x, xmltable (' b 'passing xb columns c xmltype path' / ') (+) y result is the same - Paul
  • What do these join conditions mean? - hinotf
  • (+) before the alias x - SkyWalker

0