Mitaco 0 Denunciar post Postado Março 18, 2013 Pessoal boa noite, sou novo com Oracle e por isso mal sei Criar uma Proc, mas vamos ao meu problema.Preciso Criar uma PROC que irá receber por Parametro uma String contendo um XML, ou seja, um XML em STRING. Preciso ler cada Nó do XML(string) e atualizar uma tabela.Minha pergunta é, como faço para ler cada nó do XML(string) no Oracle?Exemplo do XML: <ROOT> <DADO> <NOME>TESTE</NOME> <TELEFONE>12345678</TELEFONE> <EMAIL>TESTE@GMAIL.COM</EMAIL> </DADO> <DADO> <NOME>TESTE 2</NOME> <TELEFONE>12345678</TELEFONE> <EMAIL>TESTE2@GMAIL.COM</EMAIL> </DADO> </ROOT> Oracle tenho a seguinte PROC: CREATE OR REPLACE PROCEDURE SP_TESTE_XML ( @XML IN VARCHAR2 ) AS UPDATE TABELA SET NOME = ... AND TELEFONE = .... AND EMAIL = ... WHERE NOME = ... DECLARE BEGIN END; Se puderem me ajudar eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 19, 2013 Oracle possuí uma extensa biblioteca de funções para XML (packages etc) , só usei uma vez para gerar um XML e não ler, acabou que nem foi usada as funções do Oracle. Em todo o caso já deu uma lida na Documentação ? Compartilhar este post Link para o post Compartilhar em outros sites
Mitaco 0 Denunciar post Postado Março 19, 2013 Motta eu estou tentando fazer com base em alguns links que estou achando na NET, porém não tenho certeza de que esteja certo. E para ajudar não tenho Oracle instalado na maquina do trabalho e os caras "Superiores" não querem que seja instalado, então estou virado no "jiraya". Você pode dar uma analisada no código abaixo só para saber se aparentemente a estrutura esta ok? Bom segue o código como esta ficando: CREATE OR REPLACE PROCEDURE SP_ATUALIZA_DADOS ( @xmlDocument IN VARCHAR2 ) DECLARE xml xmlType := xmlType(@xmlDocument); COD_REG INT; COD_OCORR INT; DESC_ERRO VARCHAR2; BEGIN FOR atualizaDados IN ( SELECT TO_INT(extractvalue(xml, 'ROOT/DADOS/IDREG')) CODREG, TO_INT(extractvalue(xml, 'ROOT/DADOS/IDOCORR')) CODOCORR, extractvalue(xml, 'ROOT/DADOS/DESCERRO') DESCERRO INTO COD_REG, COD_OCORR, DESC_ERRO FROM dual; ) LOOP UPDATE TBDados SET DESCERRO = DESC_ERRO, WHERE CODREG = COD_REG AND CODOCORR = COD_OCORR END LOOP; END; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 19, 2013 O Oracle tem uma licença free (Oracle Express Edition (XE)) se for este o problema. Aparentemente a SP está ok, dá agum erro ? Compartilhar este post Link para o post Compartilhar em outros sites
Mitaco 0 Denunciar post Postado Março 21, 2013 Vlw pela Ajuda Motta, agora já esta resolvido, agora tenho outro problema, mas outro problema outro tópico. Compartilhar este post Link para o post Compartilhar em outros sites