sábado, 24 de julho de 2010

Introdução ao tipo de Dados XML - Parte 2

Utilizando SCHEMA COLLECTIONS para validar um campo XML
De acordo com o texto anterior, existem 2 formas de armazenar conteúdo XML em um banco de dados. O primeiro permite armazenar qualquer conteúdo XML desde que possua a sintaxe correta, é o XML não-tipado. Assim, para campos deste tipo, a única validação realizada é a da sintaxe do conteúdo inserido.

Em bancos de dados corporativos, a consistência e a integridade das informações armazenadas é fundamental. Dessa forma, permitir que o banco armazene qualquer tipo de conteúdo em um campo XML pode não ser viável, principalmente quando existem campos obrigatórios a serem armazenados em tal campo.

Para isso, o SQL Server permite que um campo ou variável do tipo XML seja tipado, isto é, tenha sua estrutura definida através de um SCHEMA COLLECTION.

Criando um SCHEMA COLLECTION
A sintaxe básica para criar um Schema Collection está descrita abaixo:

CREATE XML SCHEMA COLLECTION SchemaName AS  'conteúdo XML'

O exemplo a seguir ilustra o uso deste comando:

CREATE XML SCHEMA COLLECTION ContactSchema AS
'<schema xmlns="http://www.w3.org/2001/XMLSchema">
    <element name = "Contato">
        <complexType>
            <sequence>
                <element name = "nome" type="string"/>
                <element name = "email" type="string" />
            </sequence>
        </complexType>
    </element>
</schema>'

No exemplo, foi definido um Schema Collection chamado ContactSchema com uma estrutura Contato cujos atributos são nome e e-mail, ambos do tipo string.

Os Schema Collections de um banco de dados podem ser acessados através do caminho nome_do_banco->Programmability -> Types -> XML Schema Collections, através da caixa de ferramentas "Object Explorer". A Figura abaixo mostra o Schema Collection criado no exemplo anterior:


Aplicando o Schema Collection
Depois de criar o Schema Collection, pode-se aplicá-lo aos campos XML das tabelas do banco ou mesmo às variáveis XML utilizadas.

No exemplo abaixo, aplicamos o Schema Collection ContactSchema à variável @contactInfo

DECLARE @contactInfo XML (ContactSchema)

Nas linhas a seguir, um conteúdo XML é associado à variável criada.

SET @contactInfo =
'<Contato>
<nome> Evandro </nome>
<email> evdjramos@gmail.com </email>
</Contato>'


A figura abaixo mostra o resultado da execução do scripta (foi adicionado um comando SELECT na variável @contactInfo para exibir o conteúdo armazenado.


Ao associar o conteúdo à variável com Schema Collection, o SQL Server valida o XML, verificando, além de sua sintaxe, sua estrutura. 

Caso um valor inválido seja atribuído à variável, um erro será disparado, como mostra a figura abaixo


Neste exemplo, o atributo obrigatório email do elemento Contato não foi definido, causando o erro mostrado.

Aguarde!
Na continuação deste artigo, teremos veremos consultas em XML e dicas de implementação de stored procedures e funções com utilização de parâmetros XML.

Nenhum comentário:

Postar um comentário