Reputation: 31
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>');
Upvotes: 0
Views: 196
Reputation: 31648
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;
Upvotes: 1