简体   繁体   中英

Query XML in Clob Field

i have this query but it doesn't works when i use the left outer join with XML , please, can you help me to resolve it?

Error: ORACLE Sql Developer

ORA-00932: inconsistent datatypes: expected - got CLOB
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:

Query:

SELECT
xmltype(x.texto_extenso).extract('/Datos/ID/text()').getclobVal() ID
,xmltype(x.texto_extenso).extract('/Datos/TITULAR/text()').getclobVal() Nombre
,xmltype(x.texto_extenso).extract('/Datos/CS/text()').getclobVal() LLAVE_JEFE
,xmltype(x2.texto_extenso).extract('/Datos/TITULAR/text()').getclobVal() NOMBRE_JEFE

 FROM testXML x
 LEFT OUTER JOIN testXML x2 
 ON xmltype(x.texto_extenso).extract('/Datos/CS/text()').getclobVal() = 
    xmltype(x2.texto_extenso).extract('/Datos/ID/text()').getclobVal()

 WHERE x.LLAVE_TIPO_TEXTO = 11635;

Table definition:

create table testXML (
llave_texto varchar2(20) 
,llave_tipo_texto varchar2(20) 
,texto_extenso clob default empty_clob()
);

Inserts:

 insert into testXML values ('1','11635','<Datos><ID>1</ID><TITULAR>Gobernador</TITULAR><CS>0</CS></Datos>');
 insert into testXML values ('2','11635','<Datos><ID>2</ID><TITULAR>Acapulco</TITULAR><CS>1</CS></Datos>');
 insert into testXML values ('3','11635','<Datos><ID>3</ID><TITULAR>Cuernavaca</TITULAR><CS>1</CS></Datos>');
 insert into testXML values ('4','11635','<Datos><ID>4</ID><TITULAR>Coyoacán</TITULAR><CS>1</CS></Datos>');

Try This.

WITH tst
     AS (SELECT x.LLAVE_TIPO_TEXTO,
                xmltype (x.texto_extenso).EXTRACT ('/Datos/ID/text()').getclobVal ()
                   ID,
                xmltype (x.texto_extenso).EXTRACT ('/Datos/TITULAR/text()').getclobVal ()
                   Nombre,
                xmltype (x.texto_extenso).EXTRACT ('/Datos/CS/text()').getclobVal ()
                   LLAVE_JEFE
           FROM testXML x)
SELECT x.ID,
       x.Nombre,
       x.LLAVE_JEFE,
       x2.NOMBRE NOMBRE_JEFE
  FROM tst x
       LEFT OUTER JOIN tst x2 ON TO_CHAR (x.LLAVE_JEFE) = TO_CHAR (x2.ID)
 WHERE x.LLAVE_TIPO_TEXTO = 11635;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM