• Nenhum resultado encontrado

Banco de Dados. Módulo 12b SQL/XML

N/A
N/A
Protected

Academic year: 2021

Share "Banco de Dados. Módulo 12b SQL/XML"

Copied!
22
0
0

Texto

(1)

Banco de Dados

(2)

Tópicos

• Histórico

• Exemplo

• Funções de Publicação

– XMLElement() – XMLAttributes() – XMLForest() – XMLAgg() – XMLConcat()

(3)

Histórico

• SQL/XML (ou SQLX):

– parte do padrão SQL:2003

– permite criar elementos XML a partir de consultas usando funções de publicação

– comandos SQL/XML

• tratados diretamente pelo SGBD

(4)

Histórico

• SQL/XML (ou SQLX):

– criada com a participação de:

• Oracle, IBM, Microsoft, Sybase, DataDirect Technologies

– suportada por:

• Sybase ASE 12.5, IBM DB2 8.1, Oracle 9i R2 • SQL Server: via a cláusula FOR XML

(5)

Exemplo

Esquema Relacional Clientes_rel - ccodigo: number - cnome: varchar2 - crua:varchar2 - ccidade: varchar2 - cestado: varchar2 - ccep: varchar2 - cfone1: varchar2 - cfone2: varchar2 - cfone3: varchar2 Pedidos_rel - pcodigo: number - pcliente: number - pdata: date - pdataEntrega: date - prua: varchar2 - pcidade: varchar2 - pestado: varchar2 - pcep: varchar2 Itens_rel - icodigo: number - ipedido: number - iproduto: number - iquantidade: number - idesconto: float Produtos_rel - pcodigo: number - pnome: varchar2 - ppreco: float - ptaxa: float FK1 FK2 FK3 FK1: Pedidos_rel[pcliente] ⊂ Clientes_rel[ccodigo] FK2: Itens_rel[ipedido] ⊂ Pedidos_rel[pcodigo] FK3: Itens_rel[iproduto] ⊂ Produtos_rel[pcodigo]

(6)

Exemplo

Esquema XML <<Tipo XML>> Tpedido - codigo: integer - data: date - dataEntrega: date <<Tipo XML>> Tcliente - codigo: integer - nome: string

- telefone: set of string

<<Tipo XML>> Tendereco - rua: string - cidade: string - estado: string - cep: string <<Tipo XML>> Titem - codigo: integer - quantidade: integer - produto: string enderecoEntrega cliente itens 1 1..* 1

(7)

Funções de Publicação

• Funções de publicação XML

– usam valores SQL para gerar valores XML

(8)

Funções de Publicação

• XMLElement()

– transforma valores relacionais em elementos XML

• XMLAttributes()

– define os atributos de um elemento XML

• XMLForest()

– transforma uma lista de valores relacionais em uma lista de elementos XML

• XMLConcat()

– concatena um ou mais elementos XML

• XMLAgg()

(9)

XMLElement()

• Gera um elemento XML

– usa um valor retornado pela consulta

– permite especificar o nome do elemento

XMLELEMENT (

[NAME] id

[, XMLAttributes() ]

[, ( instância_elemento_XML )+ ]

)

(10)

XMLElement()

SELECT CLI.CNOME

FROM CLIENTES_REL CLI

WHERE CLI.CESTADO = 'CE'

CNOME

---Lineu Valdiana

(11)

XMLElement()

SELECT XMLELEMENT( NAME "NOME_CLIENTE", CLI.CNOME

)

FROM CLIENTES_REL CLI

WHERE CLI.CESTADO = 'CE'

<NOME_CLIENTE>Lineu</NOME_CLIENTE> <NOME_CLIENTE>Valdiana</NOME_CLIENTE>

(12)

XMLElement()

SELECT XMLELEMENT("CLIENTE_CEARA", XMLELEMENT("NOME", CLI.CNOME ), XMLELEMENT("CIDADE", CLI.CCIDADE ) )

FROM CLIENTES_REL CLI WHERE CLI.CESTADO = 'CE'

<CLIENTE_CEARA>

<NOME>Lineu</NOME>

<CIDADE>Fortaleza</CIDADE> </CLIENTE_CEARA>

<CLIENTE_CEARA>

<NOME>Valdiana</NOME>

<CIDADE>Fortaleza</CIDADE> </CLIENTE_CEARA>

(13)

XMLAttributes()

• Gera atributos de elementos XML

– usa valores retornados pela consulta – adota o nome da coluna como default

para o nome do atributo

XMLATTRIBUTES (

expressão_valor [AS alias]

[, value_expr [AS alias]*

(14)

XMLAttributes()

SELECT XMLELEMENT("CLIENTE_CEARA", XMLATTRIBUTES( CLI.CCODIGO AS CODIGO ), XMLELEMENT("NOME", CLI.CNOME ), XMLELEMENT("CIDADE", CLI.CCIDADE ) )

FROM CLIENTES_REL CLI WHERE CLI.CESTADO = 'CE'

<CLIENTE_CEARA CODIGO="1"> <NOME>Lineu</NOME>

<CIDADE>Fortaleza</CIDADE> </CLIENTE_CEARA>

<CLIENTE_CEARA CODIGO="3"> <NOME>Valdiana</NOME>

<CIDADE>Fortaleza</CIDADE> </CLIENTE_CEARA>

(15)

XMLForest()

• Gera uma lista de elementos XML:

– usa valores retornados pela consulta

– adota os nomes das colunas com default dos nomes dos elementos

– valores nulos não geram elementos XML

XMLFOREST (

expressao_valor [AS alias]

[, expressao_valor [AS alias] ]*

)

(16)

XMLForest()

SELECT XMLELEMENT("CLIENTE_CEARA", XMLFOREST( CLI.CNOME AS NOME, CLI.CCIDADE AS CIDADE ) )

FROM CLIENTES_REL CLI WHERE CLI.CESTADO = 'CE'

<CLIENTE_CEARA>

<NOME>Lineu</NOME>

<CIDADE>Fortaleza</CIDADE> </CLIENTE_CEARA>

<CLIENTE_CEARA>

<NOME>Valdiana</NOME>

<CIDADE>Fortaleza</CIDADE> </CLIENTE_CEARA>

(17)

XMLAgg()

• Gera um único valor contendo uma floresta XML

– combina uma coleção de tuplas, cada uma contendo um único valor XML

XMLAGG (

instancia_elemento_XML

[ ORDER BY lista_atributos ]

)

(18)

XMLAgg()

SELECT XMLELEMENT("CLIENTES_CE", XMLAGG( XMLELEMENT("ITEM", CLI.CNOME ) ) )

FROM CLIENTES_REL CLI

WHERE CLI.CESTADO = 'CE' <CLIENTES_CE>

<ITEM>Lineu</ITEM> <ITEM>Valdiana</ITEM> </CLIENTES_CE>

(19)

<PEDIDO_CEARA CODIGO="3"> <ITENS>

<ITEM>Mouse</ITEM> <ITEM>Monitor</ITEM> <ITEM>Modem</ITEM> </ITENS> </PEDIDO_CEARA> SELECT XMLELEMENT("PEDIDO_CEARA", XMLATTRIBUTES( PED.PCODIGO AS CODIGO ), XMLELEMENT("ITENS", (SELECT XMLAGG( XMLELEMENT("ITEM", PROD.PDESCRICAO ) )

FROM ITENS_REL IT, PRODUTOS_REL PROD WHERE IT.IPEDIDO = PED.PCODIGO AND

IT.IPRODUTO = PROD.PCODIGO) )

)

FROM PEDIDOS_REL PED

(20)

XMLConcat()

• Gera um único valor contendo uma floresta XML

– combina uma lista de valores XML

XMLConcat (

instância_elemento_XML

[, instância_elemento_XML ]*

)

(21)

XMLConcat()

SELECT XMLELEMENT("PEDIDO_CEARA", XMLATTRIBUTES( PED.PCODIGO AS CODIGO ), XMLCONCAT( (SELECT XMLAGG( XMLELEMENT("ITEM", PROD.PDESCRICAO ) )

FROM ITENS_REL IT, PRODUTOS_REL PROD WHERE IT.IPEDIDO = PED.PCODIGO AND

IT.IPRODUTO = PROD.PCODIGO)

)

)

FROM PEDIDOS_REL PED

WHERE PED.PESTADO = 'CE'

<PEDIDO_CEARA CODIGO="3"> <ITEM>Mouse</ITEM> <ITEM>Monitor</ITEM> <ITEM>Modem</ITEM> </PEDIDO_CEARA>

(22)

Referências

• Oracle XML DB Reference http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10790/xd b13gen.htm#i1025386 • The Joy of SQLX http://www.vsj.co.uk/databases/display.asp?id=322

• J. E. Funderburk, S. Malaika, B. Reinwald,

Referências

Documentos relacionados

Pode adicionar uma marca de indexação no ponto desejado durante a gravação ou a reprodução para dividir uma mensagem em duas partes.. Também pode combinar mensagens apagando a marca

Essa cartilha foi uma importante medida adota pela secretaria, sendo assim essa pesquisa investigou quantos dos professores com formação em música, em plena

12.Promover junto aos Produtores, ao Governo, à Sociedade, utilizando-se todos os recursos, destacando- se a mídia, o Seguro Agrícola, seus benefícios, seu alcance, sua importância

O perfil para seu tipo é mostrado abaixo, seguido nas próximas páginas por três gráficos que destacam como seu tipo influencia seu estilo de trabalhar, suas preferências e estilo

todos os serviços ora executados pelo Hospital São Lucas Ltda., nos limites integrais do negócio jurídico até então vigente com o HSL, suspendendo-se

Avaliação do crescimento de Metarhizium anisopliae em meio sólido à base de resíduos agroindustriais: foram utilizados substratos ricos em carboidratos como arroz polido

Movimentos atômicos para novas posições serão observados se a temperatura ou campo aplicado for suficiente para fornecer a energia necessária à retirada do átomo (ou

Este artigo apresenta parte dos resultados obtidos na RSL tendo como foco apresentar os resultados da Questão de Pesquisa sobre os desafios e dificuldades