Extrair Xml e Alterar uma Tabela
Pessoal boa tarde,
Eu gostaria de extrair dados XML e atualizar uma Tabela. Montei uma proc e ela está dando: Invalid e eu não sei o motivo, alguém poderia analizar minha proc?
Outra questão, a forma como estou pegando os dados do XML e colocando em um cursor esta certo?
CREATE OR REPLACE Procedure SP_ATUALIZA_DADOS (
PI_xmlDocument IN xmlType) is
COD_REG INT;
COD_OCORR INT;
DESC_ERRO VARCHAR2;
WITH xmlDocument AS
(
SELECT
PI_xmlDocument xmlColunas
FROM dual
)
CURSOR CR_ATUALIZAR
IS
SELECT
extractvalue(value(col), '/DADOS/IDREG') CODREG,
extractvalue(value(col), '/DADOS/IDOCORR') CODOCORR,
extractvalue(value(col), '/DADOS/DESCERRO') DESCERRO
FROM xmlDocument, TABLE(XMLSequence(extract(xmlDocument.xmlColunas,'/ROOT/DADOS'))) col;
BEGIN
OPEN CR_ATUALIZAR;
LOOP
FETCH CR_ATUALIZAR INTO COD_REG, COD_OCORR, DESC_ERRO;
EXIT WHEN CR_ATUALIZAR%NOTFOUND;
UPDATE ORAMAG.TB_REQU_RETO_CLIE TB SET
TB.txt_rspa_requ = DESC_ERRO
WHERE TB.cod_ocor = COD_OCORR;
COMMIT;
END LOOP;
CLOSE CR_ATUALIZAR;
END;
Eu sei que executando apenas esse comando como teste a query retorna os dados do XML em colunas.
Se quiser testar para ver:
WITH xmlDocument AS
(
SELECT
xmlType('<ROOT><DADOS><IDREG>123</IDREG><IDOCORR>12345</IDOCORR><DESCERRO>TESTE DESC</DESCERRO></DADOS><DADOS><IDREG>456</IDREG><IDOCORR>6789</IDOCORR><DESCERRO>TESTE DESC 2</DESCERRO></DADOS></ROOT>') xmlColunas
FROM dual
)
SELECT
extractvalue(value(col), '/DADOS/IDREG') CODREG,
extractvalue(value(col), '/DADOS/IDOCORR') CODOCORR,
extractvalue(value(col), '/DADOS/DESCERRO') DESCERRO
FROM xmlDocument, TABLE(XMLSequence(extract(xmlDocument.xmlColunas,'/ROOT/DADOS'))) col;Discussão (5)
Carregando comentários...