Pegar um XML (de um CLOB) e inserir em XMLTYPE

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Pessoal, beleza?

Seguinte, to numa situação aqui, e, gostaria de saber se já passaram por isso...

Cenário:
Tenho uma variável Clob e, necessito de inserir numa tabela, para trabalhar com um XML, onde na tabela, o datatype é um XMLType.

Problema:
Após dar um INSERT dessa variável, na tabela com campo XMLType, ocorre um erro (ou até mesmo sem inserir na base, fazendo que uma variável XMLType receba esse CLOB, já acusa erro).

Código Utilizado: Apenas para exemplo...

Selecionar tudo

DECLARE 
  vret CLOB;
  vretxml xmltype;
BEGIN
  -- Pega o CLOB
  SELECT x.ds_clob
    INTO vret
    FROM teste_xml x;
  -- Converte pra XMLTYPE
  vretxml :=  xmltype(vret); 
  --
END;  
Erro Encontrado:

Selecionar tudo

[1]: (Error): ORA-00600: internal error code, arguments: [qmxiUnpPacked2], [121], [], [], [], [], [], [] ORA-06512: at "SYS.XMLTYPE", line 0 ORA-06512: at line 10.
A versão do Banco é a 9.2.0.8.0.

Seria bug de versão?

Para complementar, vi este tópico num Fórum da ORACLE:

Selecionar tudo

Why am I getting an ORA-00600 with arguments [qmxiUnpPacked2], [121] ? 

Posted: Sep 1, 2006 2:56 AM    in response to: mdrake     
 
This message will occur when a database created with Oracle Database 9iR2 version 9.2.0.1.0 is accessed after upgrading to version 9.2.0.2.0 or later. 

The error message indicates that the catpatch upgrade script, found in $ORACLE_HOME/rdbms/admin was not run after installing the upgrade, or that the script failed to run successfully.

The problem can also occur in later versions of the 9.2.x product when a new database is created using DBCA. The Seed database templates in 9.2.x. were created with 9.2.0.1.0 and consequently when a new database is created it using the templates it is, in effect a 9.2.0.1.0 database and has to be upgraded by running catpatch before it can be used with 9.2.0.2.0 or later  
Fonte: http://forums.oracle.com/forums/thread. ... 4&tstart=0

Alguém já passou por tal situação?

Muito obrigado.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Pessoal,

Acabei conseguindo aqui, convertendo o CLOB para XMLType.

Segue um exemplo:

Selecionar tudo

DECLARE
  vclob CLOB := '<a>SEU XML</a>';
BEGIN
   INSERT INTO rg_xml (dsxml) VALUES (XMLType(vclob));
END;
Precisando, tamos aí.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes