Problemas ao gerar XML com PL/SQL

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
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Pessoal, boa noite.

Estou precisando gerar em um arquivo XML os dados de determinada tabela, utilizando para isso PL/SQL.
Porém como nunca fiz isso via PL, comecei a pesquisar uns tutoriais de como fazer, porém não estou tendo sucesso.
O que ocorre é que ao seguir algumas instruções (tenho o 11g Express) sempre acusa estar faltando alguma declaração.

O UTL_FILE consegui solucionar, pois anteriormente informava que deveria ser declarado.

O erro agora é: PLS-00201: identifier 'DBMS_XMLQUERY.GETXML' must be declared

Segue código que estou tentando:

Selecionar tudo

create or replace procedure p_geraxml
is
v_file Utl_File.File_Type;
v_xml CLOB;
v_more BOOLEAN := TRUE;
BEGIN
-- cria doc xml a partir da consulta
v_xml := DBMS_XMLQuery.GetXML('select * from emp');
-- gerar saída
v_file := Utl_File.FOpen('DIR_XML', 'test1.xml', 'w');
WHILE v_more LOOP
Utl_File.Put(v_file, Substr(v_xml, 1, 32767));
IF Length(v_xml) > 32767 THEN
v_xml := Substr(v_xml, 32768);
ELSE
v_more := FALSE;
END IF;
END LOOP;
Utl_File.FClose(v_file);

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(Substr(SQLERRM,1,255));
Utl_File.FClose(v_file);
END;
/
Como faço para "declarar" 'DBMS_XMLQUERY.GETXML'?

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

Boa tarde.

Provavelmente no XE não existe este pacote.
Tente com o pacote DBMS_XMLGEN conforme abaixo:

Selecionar tudo

 select dbms_xmlgen.getxml('select * from emp where rownum < 3') from dual;
Abraço,
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Beleza, com esse pacote consegui resolver.

Obrigado.
Responder
  • Informação
  • Quem está online

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