Caros, utilizo o Oracle 10G e estou querendo pegar um valor de uma tag que
tem repetição dentro do meu xml e não consigo, será que alguém teria alguma
dica?

CREATE TABLE xml_teste (filename VARCHAR2(64), xml_document XMLType);

INSERT INTO xml_teste (filename, xml_document)
  VALUES ('lista.xml',
          XMLType(bfilename('XMLDIR', 'lista.xml'),
          nls_charset_id('AL32UTF8')));

O XML é:

<?xml version="1.0" encoding="UTF-8"?>
<lista xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/lista.xsd">
<dados>
<dado1><codigo_identificacao>1</codigo_identificacao></dado1>
<dado2><codigo_identificacao>2</codigo_identificacao></dado2>
<dado3><codigo_identificacao>3</codigo_identificacao></dado3>
<dado4><codigo_identificacao>4</codigo_identificacao></dado4>
</dados>
</lista>


select t.filename, t.xml_document.extract('//*/codigo_identificacao/text()')
from xml_teste t;

FILENAME
----------------------------------------------------------------
T.XML_DOCUMENT.EXTRACT('//*/CODIGO_IDENTIFICACAO/TEXT()')
--------------------------------------------------------------------
lista.xml
1234

Eu queria que os valore fosse retornados separamente, e qdo eu quero
consultar apenas uma repetição, tipo repetição = 2, só com o like que
funciona e aí perco meu indice.


DES> select t.filename
  2  from xml_teste t
  3  where t.xml_document.extract('//*/codigo_identificacao/text()') like
'%2%';

FILENAME
----------------------------------------------------------------
lista.xml


e qdo eu coloco o operador '=' (igual), vem o seguinte erro:

  1  select t.filename
  2  from xml_teste t
  3* where t.xml_document.extract('//*/codigo_identificacao/text()') = '2'
DES> /
where t.xml_document.extract('//*/codigo_identificacao/text()') = '2'
                     *
ERRO na linha 3:
ORA-22950: cannot ORDER objects without MAP or ORDER method


Alguma dica?


[As partes desta mensagem que não continham texto foram removidas]



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário.



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a