Oracle & XML. Gerenciamento de Dados e Informação. Oracle XML DB. Oracle & XML. Oracle XML DB. Oracle XML DB. Suporte Nativo a XML no Oracle

Documentos relacionados
Oracle & XML. Gerenciamento de Dados e Informação. Oracle XML DB. Oracle & XML. Oracle XML DB. Oracle XML DB. Suporte Nativo a XML no Oracle

Suporte Nativo a XML no Oracle 10g

SuporteNativoa XML no

Gerenciamento de Dados e Informação Fernando Fonseca. Graduação

Gerenciamento de Dados e Informação

SQL Linguagem de Definição de Dados

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Banco de Dados I Introdução SQL

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Oracle Objeto-Relacional. Pablo Vieira Florentino

Administração de Banco de Dados

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

A linguagem SQL

Manipulação de Dados com SQL

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

10g PRINCIPAIS SERVIDORES UNIVERSAIS

Aula 06 Sistemas Embarcados LT38C

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

BCD29008 Banco de dados

Monitoria GDI. Aula Prática. OR (Aula 1)

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

ARMAZENAMENTO E PROCESSAMENTO DE BANCOS DE DADOS RELACIONAIS

MySql. Introdução a MySQL. Andréa Garcia Trindade

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

BANCO DE DADOS PARA NINJAS

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

ATUALIZANDO BANCO DE DADOS OBJETO RELACIONAL ATRAVÉS DE VISÕES XML

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Page 1. Prof. Constantino Jacob

Modelagem Física e SQL

Administração de Banco de Dados

INE BDNC. Bancos de Dados XML

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

2 Instalando e configurando o ambiente de desenvolvimento do Microsoft SQL Server

SQL. Prof. Roger Cristhian Gomes

Banco de Dados. Perspectiva Histórica dos Bancos de Dados. Prof. Walteno Martins Parreira Jr

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Professor Leonardo Larback

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Arquiteturas para SGBD. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Formas de Gerência de Dados XML

BD II (SI 587) Procedimentos Armazenados

Oracle Database 11g: Introdução à Linguagem SQL Novo

Modelagem Física e SQL

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bases de Dados. DDL Data Definition Language

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Revisão Banco de Dados

UFG - Instituto de Informática

Modelos de Dados Temporais

Blob fields in MySQL Databases

Revisão de Bancos de Dados

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Introdução em Banco de Dados

EA975 - Laboratório de Engenharia de Software

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

A linguagem SQL

Informática I. Aula 8. Aula 8-25/09/2006 1

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Oracle Database 12c: Introdução ao SQL Ed. 2

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Oracle Database: Fundamentos de SQL e PL/SQL

Introdução. O que é um Banco de Dados (BD)?

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

BD Objeto-Relacional - Motivação

SQL Básica. Andre Noel

ESTUDO DE CASO EM PL/SQL

Tratamento de Exceções

Banco de Dados. Linguagem SQL


S Q L Asserções, Visões e Técnicas de Programação. Daniel Bordignon Cassanelli Fernando Luiz Grando Pedro Patitucci Finamore

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIENCIAS DA COMPUTAÇÃO

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Marcio Victorino

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 9- Introdução ao JDBC

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Modelo para a representação de informações, utilizado por aplicações Web que trabalham com a tecnologia AJAX.

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

Treinamento em SQL. Índice

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

MySQL + PHP 06/05/2015. IFSC/campus Florianópolis Programação para a WEB Prof. Herval Daminelli

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

Linguagem SQL Restrições, Triggers e Views

Bancos (Bases) de Dados

Android e Bancos de Dados

Android e Bancos de Dados

BD II (SI 587) Programação SQL. Prof. Josenildo Silva.

4. BD Objeto-Relacional (BDOR)

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

Transcrição:

Oracle & XML Gerenciamento de Dados e Informação Suporte Nativo a XML no Oracle Fernando Fonseca Ana Carolina Robson Fidalgo Habilita uma fonte confiável para XML Apresenta flexibilidade para permitir ótimo processamento de XML tanto centrado em dados (data-centric) quanto em conteúdo (content-centric) Mantém o compromisso da Oracle com a confiabilidade, segurança, disponibilidade e escalabilidade Implementa as características chave do padrão XML 2 Oracle & XML Dá suporte aos paradigmas de desenvolvimento centrado em SQL (SQL-centric), em XML (XMLcentric) e em documentos (document-centric) Dá suporte a XML nos servidores de banco de dados e de aplicações Inovação sustentável Binary XML Storage& Indexing 3 Conjunto de tecnologias do SGBD Oracle relacionadas ao alto desempenho em armazenamento e recuperação de dados XML Provê suporte nativo a XML tratando os modelos de dados de SQL e XML de uma maneira interoperável Características Suporte aos modelos de dados de XML e XML Schema (incorporados ao SGBD) como definido pelo W3C e a métodos de acesso padrão para navegar e consultar dados XML 4 Características (Cont.) Modos de armazenar, consultar, atualizar e transformar (uso de XSLT) dados XML acessandos-os por SQL Modos de realizar operações XML em dados SQL Um repositório simples e leve para XML no qual se pode organizar e gerenciar conteúdo de BD, incluindo XML, usando uma metáfora arquivodiretóriourl 5 Características (Cont.) Uma estrutura independente de armazenamento, conteúdo e linguagem de programação para armazenar e gerenciar dados XML Gerenciamento de hierarquias de documentos XML Modos padrão da indústria para acessar e atualizar dados XML XPath da W3C Padrão ISO-ANSI SQLXML 6 1

Características Padrão da indústria (Cont.) Entrada e saída de conteúdo XML parado BD podem ser realizadas por FTP, HTTP(S), e WebDAV API padrão provê acesso por programas e manipulação de conteúdo XML com Java, C e PLSQL Gerenciamento de memória e otimizações específicas para XML Tipo pré-definido para criar, extrair, indexar e validar dados XML com XML Schema: XMLType Pode ser aplicado a Coluna ou Tabela Armazena o conteúdo do documento como texto XML utilizando o tipo de dado Character Large Object (CLOB) armazenamento não-estruturado - ou como conjuntos de objetos armazenamento estruturado Principais benefícios União dos mundos: XML e SQL Indexação e navegação Parser embutido Combinação de XMLType com outros tipos 7 8 Quando usar XMLType Armazenar e recuperar XML como um todo Consultas em elementos XML Utilizar a funcionalidade XPath Preparar para futuras atualizações Gateways p fontes externas Arquitetura Browser Acesso direto HTTP Browser ou outra interface Aplicação JDBC Acesso por Serviços Oracle NET SGBD Oracle Acesso Stream AQ Oracle Ferramenta Desktop Acesso WebDAV Ferramenta FTP Acesso FTP Tabelas e Views XMLType Repositório 9 10 Stream AQ Oracle Provê o gerenciamento de mensagens e a comunicação necessária para integração de aplicações WebDAV (Web-based Distributed Authoring and Versioning) Um conjunto de extensões ao protocolo do HTTP que permite aos usuários editar e gerenciar arquivos colaborativamente em servidores Web remotos Serviços XML em tabelas e views XMLType Validação Transformação (Uso de XSLT) Registro de XML Schema Create Table (armazenamento LOB ou O-R) Insert, Delete, Update em tabelas XMLType Indexação 11 12 2

Recuperar Gerar XML usando API XML Type SQL Java PLSQL C C++ Serviços XML em repositórios XML DB Versão Segurança ACL (Access Control List) Diretórios Recuperar Gerar XML usando recursos das API SQL Java PLSQL 13 14 Armazenamento de XMLType Quando XML Schemas são registrados no, um conjunto de tabelas default é criado e usado para armazenar instâncias de documentos XML associados a cada schema Esses documentos também podem ser vistos e acessados no repositório Tabelas e colunas XMLType podem ser restringidas de acordo com um XML Schema O SGBD garantirá que somente os documentos XML que sejam validados de acordo com o XML Schema possam ser armazenados na coluna ou na tabela Desde que o conteúdo da tabela esteja de acordo com uma estrutura conhecida de XML, o pode usar a informação contida no XML schema para fornecer processamento de consultas ou de atualizações mais inteligente de dados XML 15 16 Tabelas e colunas XMLType podem ser restringidas de acordo com um XML Schema (Cont.) Restringir o XMLType a um XML Schema Fornece a opção de armazenar o conteúdo do documento usando técnicas de armazenamento estruturado Decompõe o conteúdo do documento XML e o armazena como um conjunto de objetos SQL, em vez de simplesmente armazenar o documento como texto em um CLOB O modelo de objeto usado para armazenar o documento é derivado automaticamente do conteúdo do XML schema 17 Armazenamento de XMLType Acesso HTTP Direto JDBC Acesso Oracle Net SGBD Oracle Acesso a streams AQ Oracle Acessos WebDAV e FTP 18 3

Oracle XMLDB Índices: B-Tree Texto Baseado emfunção Bitmap Handler ProtocoloHTTP Tabelas XMLType XML Schemas SGBD Oracle Visões XMLType Engenho SQL Repositório Handler Protocolos DAV, FTP Índice hierárquico Recursos XML Parsers Suporte a interfaces DOM e SAX XML Class Generator Código fonte a partir de XML DTD ou Schema XML SQL Utility Gerar documento XML a partir de consulta SQL DBMS_XMLGEN, SYS_XMLGEN,... Armazena mento CLOB Armazenamento XML estruturado nativo Tabelas locais DBLinks Tabelas remotas 19 20 Usando XML Criando tabela com atributo XML CREATE TABLE lojas( loja_id NUMBER(5), loja_desc SYS.XMLTYPE, loja_nome VARCHAR2(35), localizacao_id NUMBER(4) ); Coluna SYS.XMLTYPE Usando XML Criando tabela XML como objeto (Binário) Duas formas Como uma tabela XMLTYPE CREATE TABLE clientes OF XMLTYPE; Armazenamento CLOB (Não estruturado) 21 22 Usando XML Criando tabela XML como objeto (Binário) (Cont.) Solução objeto-relacional CREATE TABLE lojas( loja_id NUMBER(5), loja_desc XMLTYPE, loja_nome VARCHAR2(35), localizacao_id NUMBER(4) ) XMLTYPE column loja_desc XMLSCHEMA "http:www.cin.ufpe.br~fdfdcadeialojas.xsd" ELEMENT "CadeiaLojas" STORE AS OBJECT RELATIONAL; 23 Usando XML Validação de conteúdo de um XMLType de acordo com um XML Schema Uso do método schemavalidate( ) 24 4

Usando XML Registro de esquema XML com armazenamento objeto-relacional DBMS_XMLSCHEMA.registerSchema ( SCHEMAURL =>'http:www.cin.ufpe.br~fdfd CadeiaLojas.xsd', SCHEMADOC => xmltype(bfilename('xmldir','cl.xsd'), nls_charset_id('al32utf8')), GENTYPES =>TRUE, GENTABLES =>TRUE) Usando XML Armazenamento CLOB Inserindo dados XML Função createxml() para instanciação INSERT INTO lojas(loja_id, loja_desc) VALUES(1001, sys.xmltype.createxml( ' <Loja LjNo=" 100"> <Predio>Próprio<Predio> <Loja>')); Função createxml( ) 25 26 Consultando XML Usando XML Armazenamento CLOB Atualizando XML Usando XML Armazenamento CLOB Função createxml( ) SELECT l.loja_desc.extract('lojaprediotext( )').getstringval() "Predio" FROM lojas l; Função extract( ) UPDATE lojas SET loja_desc = Sys.XMLType.createXML( '<LojaljNo="200"> <Predio>Alugado<Predio> <Loja>') WHERE loja_id = 1004; 27 28 Removendo XML Usando XML Armazenamento CLOB DELETE FROM lojas l WHERE l.loja_desc.extract('prediotext( )').getstringval( ) ='Alugado'; Função extract( ) 29 Considerando a tabela Lojas como definido abaixo Inserindo os dados CREATE TABLE lojas( loja_id NUMBER(5), loja_desc SYS.XMLTYPE ); INSERT INTO lojas (loja_id, loja_desc) VALUES (1001, sys.xmltype.createxml( ' <Loja LjNo="100"> <Predio>Próprio<Predio> <Loja>' )); INSERT INTO lojas (loja_id, loja_desc) VALUES (1002, sys.xmltype.createxml( ' <Loja LjNo="200"> <Predio>Alugado<Predio> <Loja>' )); INSERT INTO lojas (loja_id, loja_desc) VALUES (1003, sys.xmltype.createxml( ' <Loja LjNo="300"> <Predio>Comodato<Predio> <Loja>' )); INSERT INTO lojas (loja_id, loja_desc) VALUES (1004, sys.xmltype.createxml('<loja LjNo="400"> <Predio>Leasing<Predio> <Loja>' )); 30 5

Realizando consulta SQL convencional LOJA_ID SELECT* FROM lojas; LOJA_DESC 1001 <Loja LjNo="100"> <Predio>Próprio<Predio> <Loja> 1002 <Loja LjNo="200"> <Predio>Alugado<Predio> <Loja> 1003 <Loja LjNo="300"> <Predio>Comodato<Predio> <Loja> 1004 <Loja LjNo="400"> <Predio>Leasing<Predio> <Loja> 31 Realizando a consulta manipulação XML SELECT l.loja_desc.extract('lojaprediotext( )').getstringval( ) "Predio" FROM lojas l; Predio Próprio Alugado Comodato Leasing Expressão XPATH 32 Realizando a consulta Executando o comando SELECT l.loja_desc.extract('lojaprediotext( )').getstringval( ) "Predio", l.loja_id FROM lojas l; UPDATE lojas SET loja_desc= Sys.XMLType.createXML( '<Loja ljno="300"> <Predio>Alugado<Predio> <Loja>') where loja_id = 1004; Predio LOJA_ID Próprio 1001 Alugado 1002 Comodato 1003 Leasing 1004 33 34 Repetindo a consulta SELECT l.loja_desc.extract('lojaprediotext( )').getstringval( ) "Predio", l.loja_id FROM lojas l; Executando o comando DELETE FROM lojas l WHERE l.loja_desc.extract('prediotext( )').getstringval( ) = 'Alugado'; Predio LOJA_ID Próprio 1001 Alugado 1002 Comodato 1003 Alugado 1004 35 36 6

Repetindo a consulta SELECT l.loja_desc.extract('lojaprediotext( )').getstringval( ) "Predio" FROM lojas l; Predio Próprio Comodato Removidas as duas tuplas com informação sobre Prédio = Alugado Considerar a tabela CREATE TABLE carro( chassi VARCHAR2(20) NOT NULL, modelo VARCHAR2(30) NOT NULL, data_carro DATE NOT NULL, km_carro INTEGER NOT NULL, CONSTRAINT carro_pk PRIMARY KEY(chassi) ); 37 38 Inserindo dados INSERT INTO carro(chassi, modelo, data_carro, km_carro) VALUES ('1', 'Clio', to_date('22032007','ddmmyyyy'), 1231); INSERT INTO carro(chassi, modelo, data_carro, km_carro) VALUES ('2', 'Audi A4', to_date('30042007','ddmmyyyy'), 1245); INSERT INTO carro(chassi, modelo, data_carro, km_carro) VALUES ('3', 'Scenic', to_date('23022007','ddmmyyyy'), 1000); INSERT INTO carro(chassi, modelo, data_carro, km_carro) VALUES ('4', 'Gol', to_date('01032007','ddmmyyyy'), 700); INSERT INTO carro(chassi, modelo, data_carro, km_carro) VALUES ('5', 'Ferrari', to_date('11012007','ddmmyyyy'), 1290); 39 Função SYS_XMLGEN ( ) Usada para gerar XML dentro de consultas SQL Mistura elementos de XML com SQL Retorna um tipo XMLType Realizando a consulta SELECT SYS_XMLGEN(modelo) as XML FROM carro; 40 XML <?xml version="1.0"?> <MODELO>Clio<MODELO> <?xml version="1.0"?> <MODELO>Audi A4<MODELO> <?xml version="1.0"?> <MODELO>Scenic<MODELO> <?xmlversion="1.0"?> <MODELO>Gol<MODELO> <?xmlversion="1.0"?> <MODELO>Ferrari<MODELO> Pacote DBMS_XMLGEN Cria documentos XML a partir de consultas SQL Um roteiro de uso Permitir output na interface de caracteres Set serveroutput on; Definir um bloco Declarar variável para criar um contexto ctx dbms_xmlgen.ctxhandle; 41 Variável Contexto Tipo (pacote) Método do Pacote 42 7

Definir um bloco (Cont.) Declarar variável do tipo CLOB para armazenar o arquivo XML gerado result clob; Variável Criar um novo contexto com a consulta SQL apropriada ctx := dbms_xmlgen.newcontext('select * from carro'); Método do Pacote Consulta SQL para gerar resposta em documento XML 43 Definir um bloco (Cont.) Personalizar a tag raiz do documento DBMS_XMLGEN.setRowset(ctx, 'Locadora'); Método do Pacote Personalizar a tag de entidade DBMS_XMLGEN.setRowTag(ctx,'CARRO'); Método do Pacote Variável Contexto Personalização da raiz Variável Contexto Personalização da linha 44 Definir um bloco (Cont.) Gerar um valor CLOB como resultado result := dbms_xmlgen.getxml(ctx); Dar saída do resultado dbms_output.put_line(result); Método de Pacote Método do Pacote Fechar o contexto dbms_xmlgen.closecontext(ctx); Variável do Tipo CLOB Variável contexto 45 de bloco set serveroutput on; declare ctx dbms_xmlgen.ctxhandle; result clob; begin --criar um novo contexto para a consulta SQL ctx:= dbms_xmlgen.newcontext('select * from carro'); --personalizar as tags raiz e de entidade DBMS_XMLGEN.setRowsetTag(ctx, 'LOCADORA'); DBMS_XMLGEN.setRowTag(ctx,'CARRO'); -- gerar um valor CLOB como resultado result := dbms_xmlgen.getxml(ctx); -- dar saída do resultado dbms_output.put_line(result); -- fechar o contexto dbms_xmlgen.closecontext(ctx); end; 46 <?xml version="1.0"?> <LOCADORA> <CARRO> <CHASSI>1<CHASSI> <MODELO>Clio<MODELO> <DATA_CARRO>220307<DATA_CARRO> <KM_CARRO>1231<KM_CARRO> <CARRO> <CARRO> <CHASSI>2<CHASSI> <MODELO>Audi A4<MODELO> <DATA_CARRO>300407<DATA_CARRO> <KM_CARRO>1245<KM_CARRO> <CARRO> <CARRO> <CHASSI>3<CHASSI> <MODELO>Scenic<MODELO> <DATA_CARRO>230207<DATA_CARRO> <KM_CARRO>1000<KM_CARRO> <CARRO> <CARRO> <CHASSI>4<CHASSI> <MODELO>Gol<MODELO> <DATA_CARRO>010307<DATA_CARRO> <KM_CARRO>700<KM_CARRO> <CARRO> 47 48 8

<CARRO> Considerando o contexto objeto-relacional Dado o modelo ERE <CHASSI>5<CHASSI> <MODELO>Ferrari<MODELO> <DATA_CARRO>110107<DATA_CARRO> <KM_CARRO>1290<KM_CARRO> <CARRO> <LOCADORA> N 1 49 50 Criação de Tipos Criação de Tipos (Cont.) CREATE OR REPLACE TYPE tp_compositor AS OBJECT ( nome VARCHAR2(16) ); CREATE OR REPLACE TYPE tp_compositoresas VARRAY(3) OF tp_compositor; 51 CREATE OR REPLACE TYPE tp_faixa AS OBJECT( cod integer, titulo varchar2(23), compositores tp_compositores ) ; 52 Criação de Tipos (Cont.) Criação de Tipos (Cont.) N 1 CREATE OR REPLACE TYPE tp_ref_relac AS OBJECT( faixa REF tp_faixa); CREATE TYPE tp_nt_ref_relac AS TABLE OF tp_ref_relac; N 1 CREATE OR REPLACE TYPE tp_cdas OBJECT ( cod INTEGER, titulo VARCHAR2(20), genero VARCHAR2(12), faixas tp_nt_ref_relac ); 53 54 9

N Criação de Tabelas 1 CREATE TABLE tb_faixa OF tp_faixa (cod PRIMARY KEY); CREATE TABLE tb_cd OF tp_cd (cod PRIMARY KEY) NESTED TABLE faixas STORE AS lista_faixas; Inserir dados tb_faixa INSERT INTO tb_faixavalues (tp_faixa(1,'nossa Canção', tp_compositores( tp_compositor('robertocarlos'), tp_compositor('erasmocarlos') ))); INSERT INTO tb_faixavalues (tp_faixa(2,'negro Gato', tp_compositores( tp_compositor('robertocarlos'), tp_compositor('erasmo Carlos'), tp_compositor('rossinipinto') ))); 55 56 Inserir dados tb_faixa (Cont.) INSERT INTO tb_faixavalues (tp_faixa(3,'copacabana', tp_compositores( tp_compositor('antoniomaria') ))); INSERT INTO tb_faixavalues (tp_faixa(4,'desafinado', tp_compositores( tp_compositor('joãogilberto') ))); INSERT INTO tb_faixavalues (tp_faixa(5,'todo mundo gosta de mim', tp_compositores( tp_compositor('ronaldoboscoli'), tp_compositor('nelson Mota'), tp_compositor('tomzé')))); 57 Inserir dados tb_cd INSERT INTO tb_cdvalues (1, 'Perfil', 'Coletânea', tp_nt_ref_relac( tp_ref_relac((select REF(F) FROM tb_faixaf WHERE F.cod=1)), tp_ref_relac((select REF(F) FROM tb_faixaf WHERE F.cod=2)))); INSERT INTO tb_cdvalues (2,'Páginas da Vida', 'Novela', tp_nt_ref_relac( tp_ref_relac((select REF(F) FROM tb_faixaf WHERE F.cod=3)), tp_ref_relac((select REF(F) FROM tb_faixaf WHERE F.cod=4)))); 58 Inserir dados tb_cd (Cont.) INSERT INTO tb_cdvalues (3, 'Belíssima', 'Novela', tp_nt_ref_relac( tp_ref_relac((select REF(F) FROM tb_faixaf WHERE F.cod=5)) )); Consulta tb_cd SELECT* FROM tb_cd; 59 Resposta da Consulta COD TITULO GENERO FAIXAS(FAIXA) 1 Perfil Coletânea TP_NT_REF_RELAC(TP_REF_RELAC(0000220208241F5C6 19D99F743E05015AC07026337241F5C619D96F743E050 15AC07026337), TP_REF_RELAC(0000220208241F5C619D9AF743E05015 AC07026337241F5C619D96F743E05015AC07026337)) 1 Páginas da Vida Novela TP_NT_REF_RELAC(TP_REF_RELAC(0000220208241F5C6 19D9BF743E05015AC07026337241F5C619D96F743E05 015AC07026337), TP_REF_RELAC(0000220208241F5C619D9CF743E05015 AC07026337241F5C619D96F743E05015AC07026337)) 3 Belíssima Novela TP_NT_REF_RELAC(TP_REF_RELAC(0000220208241F5C6 19D9DF743E05015AC07026337241F5C619D96F743E05 015AC07026337)) 60 10

Gerar documento XML contendo os títulos dos CD Uso de SYS_XMLGEN SELECT SYS_XMLGEN(titulo) as XML FROM tb_cd; Resposta da Consulta XML ---------------------------------- <?xml version="1.0"?> <TITULO>Perfil<TITULO> <?xml version="1.0"?> <TITULO>Páginas da Vida<TITULO> <?xml version="1.0"?> <TITULO>Belíssima<TITULO> 61 Gerar documento XML contendo o resultado da consulta select * from tb_cd Uso de DBMS_XMLGEN set serveroutput on; declare ctx dbms_xmlgen.ctxhandle; result clob; begin --criar um novo contexto para a consulta SQL ctx:= dbms_xmlgen.newcontext('select * from tb_cd'); -- gerar um valor CLOB como resultado result := dbms_xmlgen.getxml(ctx); -- dar saída do resultado dbms_output.put_line(result); -- fechar o contexto dbms_xmlgen.closecontext(ctx); end; 62 <?xml version="1.0"?> <ROWSET> <ROW> <COD>1<COD> <TITULO>Perfil<TITULO> <GENERO>Coletânea<GENERO> <FAIXAS> <TP_REF_RELAC> <FAIXA>0000220208241F5C619D99F7 43E05015AC07026337241F5C619D96 F743E05015AC07026337<FAIXA> Cod, Titulo, Genero, Faixas <TP_REF_RELAC> <FAIXA>0000220208241F5C619D9AF7 43E05015AC07026337241F5C619D96 F743E05015AC07026337<FAIXA> <TP_REF_RELAC> <FAIXAS> <ROW> <ROW> <COD>2<COD> <TITULO>Páginas da Vida<TITULO> <TP_REF_RELAC> <GENERO>Novela<GENERO> 63 64 <FAIXAS> <TP_REF_RELAC> <TP_REF_RELAC> <FAIXAS> <ROW> <FAIXA>0000220208241F5C619D9BF7 43E05015AC07026337241F5C619D96 F743E05015AC07026337<FAIXA> <ROW> <COD>3<COD> <TITULO>Belíssima<TITULO> <TP_REF_RELAC> <TP_REF_RELAC> <FAIXA>0000220208241F5C619D9CF7 43E05015AC07026337241F5C619D96 F743E05015AC07026337<FAIXA> <GENERO>Novela<GENERO> <FAIXAS> <TP_REF_RELAC> <FAIXA>0000220208241F5C619D9DF7 43E05015AC07026337241F5C619D96 F743E05015AC07026337<FAIXA> 66 11

<TP_REF_RELAC> <FAIXAS> <ROW> <ROWSET> 67 Gerar documento XML contendo o resultado da consulta para retornar titulo do CD e o título e compositores de cada faixa Uso de DBMS_XMLGEN set serveroutput on; declare ctx dbms_xmlgen.ctxhandle; result clob; begin --criarum novo contextopara a consultasql ctx:= dbms_xmlgen.newcontext('select c.titulo, f.faixa.titulo, f.faixa.compositores from tb_cd c, TABLE(c.faixas)f'); --personalizaras tags raize de entidade DBMS_XMLGEN.setRowsetTag(ctx, 'Discoteca'); DBMS_XMLGEN.setRowTag(ctx,'CD'); 68 Gerar documento XML (Cont.) -- gerar um valor CLOB como resultado result:= dbms_xmlgen.getxml(ctx); -- dar saída do resultado dbms_output.put_line(result); -- fechar o contexto dbms_xmlgen.closecontext(ctx); end; Titulo, faixa.titulo, faixa.compositores <?xml version="1.0"?> <Discoteca> <CD> <TITULO>Perfil<TITULO> <FAIXA.TITULO>Nossa Canção<FAIXA.TITULO> <FAIXA.COMPOSITORES> <NOME>Roberto Carlos<NOME> <NOME>Erasmo Carlos<NOME> 69 70 <FAIXA.COMPOSITORES> <CD> <CD> <TITULO>Perfil<TITULO> <FAIXA.TITULO>Negro Gato<FAIXA.TITULO> <FAIXA.COMPOSITORES> <NOME>Roberto Carlos<NOME> <NOME>Erasmo Carlos<NOME> 71 <NOME>Rossini Pinto<NOME> <FAIXA.COMPOSITORES> <CD> <CD> <TITULO>Páginas da Vida<TITULO> <FAIXA.TITULO>Copacabana<FAIXA.TITULO> <FAIXA.COMPOSITORES> <NOME>Antonio Maria<NOME> <FAIXA.COMPOSITORES> 72 12

<NOME>Rossini Pinto<NOME> <FAIXA.COMPOSITORES> <CD> <CD> <TITULO>Páginas da Vida<TITULO> <FAIXA.TITULO>Copacabana<FAIXA.TITULO> <FAIXA.COMPOSITORES> <NOME>Antonio Maria<NOME> <FAIXA.COMPOSITORES> 73 <CD> <CD> <TITULO>Páginas da Vida<TITULO> <FAIXA.TITULO>Desafinado<FAIXA.TITULO> <FAIXA.COMPOSITORES> <NOME>João Gilberto<NOME> <FAIXA.COMPOSITORES> <CD> <CD> 74 <TITULO>Belíssima<TITULO> <FAIXA.TITULO>Todo mundo gosta de mim<faixa.titulo> <FAIXA.COMPOSITORES> <NOME>Ronaldo Boscoli<NOME> <NOME>Nelson Mota<NOME> <NOME>Tom Zé<NOME> <FAIXA.COMPOSITORES> <CD> <Discoteca> 75 76 Exercício Extra XML Opcional Gerar arquivo XML a partir de consulta em uma das tabelas do modelo OR implementado pela equipe no Oracle Uma consulta diferente para cada membro da equipe Criar uma DTD ou XML Schema apropriado para o arquivo XML gerado Não usar a cláusula ANY Criar uma formatação CSS apropriada para o arquivo gerado Mostrar dados de tabelas na forma de tabela Exibir o arquivo no browser Data de entrega: junto com a apresentação do projeto objeto-relacional de cada equipe Vale até 1,0 ponto na prova para passar por média ouir para a final 77 13