Compartilhar via


Adicionando lógica comercial

Sua lógica comercial pode ser adicionada a dados XML de vários modos:

  • Você pode escrever restrições de linha ou de coluna para impor restrições específicas ao domínio durante inserção e modificação de dados XML.

  • Você pode escrever um gatilho na coluna XML que seja disparado quando valores forem inseridos ou atualizados na coluna. O gatilho pode conter regras de validação específicas ao domínio ou popular tabelas de propriedades.

  • A partir do SQL Server 2005, o Mecanismo de Banco de Dados inclui a capacidade de executar código gerenciado. É possível usar essa integração de CLR (Common Language Runtime) para escrever funções em código gerenciado para as quais você passa valores XML, e usar recursos de processamento do XML fornecidos pelo namespace System.Xml. Um exemplo é aplicar a transformação XSL a dados XML. Como alternativa, é possível desserializar o XML em uma ou mais classes gerenciadas e operar sobre elas usando código gerenciado.

  • É possível escrever funções e procedimentos armazenados Transact-SQL que começam o processamento na coluna XML para suas necessidades comerciais.

Exemplo: Aplicando XSL Transformation

Considere uma função CLR TransformXml() que aceita uma instância de tipo de dados xml e uma transformação XSL armazenada em um arquivo, aplica a transformação nos dados XML e retorna o XML transformado no resultado. O seguinte é um função em esqueleto escrita em C#:

public static SqlXml TransformXml (SqlXml XmlData, string xslPath) {
   // Load XSL transformation
   XslCompiledTransform xform = new XslCompiledTransform();
   XPathDocument xslDoc = new XPathDocument (xslPath);
   xform.Load(xslDoc);

   // Load XML data 
   XPathDocument xDoc = new XPathDocument (XmlData.CreateReader());

   // Return the transformed value
   MemoryStream xsltResult = new MemoryStream();
   xform.Transform(xDoc, null, xsltResult);
   SqlXml retSqlXml = new SqlXml(xsltResult);
   return (retSqlXml);
} 

Após o assembly ser registrado e a função Transact-SQL definida pelo usuário ser criada, SqlXslTransform() correspondente a TransformXml(), a função pode ser invocada no Transact-SQL conforme mostrado na consulta a seguir:

SELECT SqlXslTransform (xCol, 'C:\MyFile\xsltransform.xsl')
FROM    T
WHERE  xCol.exist('/book/title/text()[contains(.,"custom")]') =1

O resultado da consulta contém um conjunto de linhas do XML transformado.

A integração CLR no SQL Server expande as possibilidades de decomposição de dados XML em tabelas ou promoção de propriedades e consultar dados XML usando classes gerenciadas no namespace System.Xml. Para obter mais informações, consulte Visão geral da integração CLR (Common Language Runtime).

Consulte também

Conceitos