1. O documento discute conceitos sobre banco de dados XML no Oracle, incluindo XML, namespaces, XMLType e operações DML para inserir, atualizar, extrair e deletar dados XML armazenados no banco de dados.
2. É apresentado o tipo de dado XMLType para armazenar documentos XML de forma estruturada e exemplos de comandos SQL para criar tabelas com colunas XMLType e do tipo XMLType.
3. São mostrados exemplos de como utilizar procedimentos como updateXML, insertChildXML e deleteXML para modificar dados XML armazenados e o
O uso de tecnologias de big data na concepção e execução de estratégias de en...
Oracle XML DB
1. Banco de Dados XML
Diego A. Lusa
Banco de Dados II
Conceitos Avancados
7 de Novembro de 2014
1 / 18
2. Sumario
1. Conceitos Basicos
XML
Namespaces
2. Oracle XML DB
Caractersticas
XMLType
Instruc~oes DDL
Instruc~oes DML
2 / 18
3. XML - eXtensible Markup Language
I Linguagem criada para descrever dados
I E
uma linguagem de marcac~ao que n~ao apresenta um conjunto de
tags pre-de
4. nidas
I E
extensvel e muito utilizada na Web e em arquiteturas SOA
Exemplo
?xml version=1.0 encoding=UTF-8?
alunos
aluno
nomeFulano/nome
sobrenomede Tal/sobrenome
matricula83473/matricula
/aluno
/alunos
3 / 18
5. XML - namespaces
I E
um metodo utilizado para evitar con
itos de nome dos elementos
no XML
I Quali
10. XPath
I Linguagem utilizada para localizar informac~oes em estruturas XML
I Oferece um conjunto de operadores e uma sintaxe formal de consulta
I Utiliza-se a hierarquia do schema de
11. nido para gerar as consultas
I E
utilizada conjuntamente a linguagem XSLT
Exemplo
/alunos/aluno[0]/nome/text()
/alunos/*:aluno[name = 'Fulano' and age10]/id
/alunos/doc:aluno/matricula
/catalogo/album[@artista=Yanni]
/catalogo/album[@artista=Yanni and @ano=2014]
6 / 18
13. Caractersticas basicas
I E
um conjunto de tecnologias para o banco de dados Oracle, voltadas
a:
Armazenamento de dados XML
Criac~ao de dados em formato XML
Acesso, busca, validac~ao, transformac~ao, convers~ao e indexac~ao de
dados XML
I Includo como parte do Oracle Database a partir da vers~ao Oracle9i
Release 2 (9.2)
I Prov^e meios para interoperar SQL e XML
8 / 18
14. Caractersticas basicas
I Permite gravar dados XML na base de tr^es formas distintas:
Estruturado: Utilizando o tipo de dado XMLType. E
mais otimizado
que as demais formas de persist^encia.
Desestruturado: Utilizando o tipo de dado CLOB. Oferece maior
exibilidade.
Binario: Utilizando o tipo de dado BLOB. Melhor tecnica para
armazenamento e
16. XMLType
I Tipo de dado SQL nativo criado para armazenar documentos XML
I Pode-se utiliza-lo como coluna, variavel ou argumento em func~oes e
procedimentos
I Tambem e possvel criar uma tabela do tipo XMLType
I Apenas estruturas XML bem formadas s~ao aceitas pelo tipo XMLType
I Adicionalmente, os documentos podem ser validados contra seu XML
Schema
10 / 18
17. Criando tabelas
Exemplo
--Tabela com coluna XMLType
create table xml_documento (
doc_id number not null,
descricao varchar2(200) not null,
documento xmltype not null,
constraint pk_xml_documento primary key(doc_id)
);
--Tabela do tipo XMLType
create table xml_documento_objeto of xmltype;
11 / 18
19. Atualizando dados
I Para atualizar algum valor existente dentro da estrutura do XML
utiliza-se o procedimento updateXML.
I Dentre os argumentos do procedimento esta a express~ao XPath que
indica o ponto exato da atualizac~ao
Exemplo
-- Atualizando primeiro aluno do mestrado
update XML_DOCUMENTO_OBJETO o set o.object_value = updateXML(
o.OBJECT_VALUE,--documento
'/cs:cursos/c:curso[@tipo=mestrado]/alunos/aluno[1]/nome/text()',--onde atualizar
'Aluno atualizado',-- novo valor
'xmlns:c=http://upf.br/cursos/curso xmlns:cs=http://upf.br/cursos' --namespaces
);
13 / 18
20. Atualizando dados
I Para inserir novos valores dentro da estrutura do XML pode-se
utilizar os procedimentos:
insertChildXML
insertChildXMLBefore
insertChildXMLAfter
appendChildXML
I Dentre os argumentos do procedimento esta a express~ao XPath que
indica o ponto exato da inserc~ao
14 / 18
21. Atualizando dados
Exemplo
update XML_DOCUMENTO_OBJETO o set o.object_value =
insertChildXML(o.OBJECT_VALUE,'/cs:cursos/c:curso[@tipo=mestrado]/alunos',
'aluno',
XMLType('
aluno
nomeNovo aluno inserido/nome
matriculamst:12345/matricula
/aluno
'),
'xmlns:c=http://upf.br/cursos/curso xmlns:cs=http://upf.br/cursos');
update XML_DOCUMENTO_OBJETO o set o.object_value =
appendChildXML(
o.OBJECT_VALUE,
'/cs:cursos/c:curso[@tipo=fundamental]/alunos',
XMLType('
aluno
nomeFulano do fundamental/nome
matricula1111/matricula
/aluno
'),
'xmlns:c=http://upf.br/cursos/curso xmlns:cs=http://upf.br/cursos');
15 / 18
22. Eliminando dados
I Para remover algum valor existente dentro da estrutura do XML
utiliza-se o procedimento deleteXML.
I Dentre os argumentos do procedimento esta a express~ao XPath que
indica o ponto exato da remoc~ao
Exemplo
update XML_DOCUMENTO_OBJETO o set o.object_value =
deleteXML(
o.OBJECT_VALUE,
'/cs:cursos/c:curso[@tipo=doutorado]/alunos/aluno[matricula=doc34512]',
'xmlns:c=http://upf.br/cursos/curso xmlns:cs=http://upf.br/cursos'
);
16 / 18
23. Recuperando dados
I Para extrar valores da estrutura XML utilizam-se os metodos extract
e/ou extractValue;
I Dentre os argumentos do procedimento esta a express~ao XPath que
indica o ponto exato da recuperac~ao dos dados;
Exemplo
select d.descricao, d.DOCUMENTO.extract(
'/cs:cursos/c:curso[@tipo=mestrado]/alunos/aluno[1]/nome/text()',
'xmlns:c=http://upf.br/cursos/curso xmlns:cs=http://upf.br/cursos'
).getStringVal() as valor from xml_documento d;
17 / 18
25. cas
Adams, Drew. Oracle
R XML DB Developer's Guide 11g Release 2 (11.2).
Edic~ao Fevereiro de 2014. Acesso em: 30 out. 2014. Disponvel em:
http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/toc.htm
18 / 18