Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 New Features: Os métodos XML - Parte 2 -->
 
Avaliação: | Publicado em: 02/08/2007
SQL Server 2005 New Features: Os métodos XML - Parte 2


A Instrução INSERT (XML DML)

Assim como a instrução INSERT, amplamente conhecida da SQL, essa instrução permite que novos elementos e atributos sejam inseridos dentro de um nó presente no documento XML. Antes de executar os scripts de inserção, é recomendável utilizar uma instrução SELECT para visualizar os resultados antes do comando de INSERT (XML DML). O projeto em anexo, ao término do artigo, contempla as instruções SELECT para verificação.

UPDATE tblDadosPessoas
SET DadosEmpregado.modify('
  insert <Curso nome="Balanced Scored Card e métricas de desempenho corporativo"/>
  into (/Matricula/Cursos)[1]'
)
WHERE MATRICULA = '2002R1-144'

O comando acima insere um novo curso para a empregada Jana (matrícula 2002R1-144). Como ela já possui quatro cursos cadastrados, esse curso é inserido ao final sendo, portanto o quinto curso. O operador INTO é responsável por inserir o elemento "Curso" dentro do elemento "Cursos". Observe que mesmo existindo um único elementos "Cursos" é necessário especificar o [1] para garantir que um único elemento será retornado.

UPDATE tblDadosPessoas
SET DadosEmpregado.modify('
  insert <Curso nome="SQL Server 2005 - Administração"/>
  after (/Matricula/Cursos/Curso)[1]'
)
WHERE MATRICULA = '2007R2-129'

Esse comando irá inserir o curso "SQL Server 2005 - Administração" na relação de cursos do empregado Cássio. Dessa vez, a XPath especificou o primeiro curso e não apenas o elemento "Cursos". O operador utilizado foi o AFTER que informa ao SQL Server que o novo elemento "Curso" deve ser inserido após o primeiro elemento "Curso". Isso fará com que o curso "SQL Server 2005 - Administração" fique logo abaixo (after) do curso "SQL Server 2000 - Administração e Desenvolvimento"

UPDATE tblDadosPessoas
SET DadosEmpregado.modify('
  insert <Curso nome="Administração do Windows 2003 Server"/>
  before (/Matricula/Cursos/Curso)[1]'
)
WHERE MATRICULA = '2005R3-021'

A utilização do operador BEFORE é similar ao operador AFTER, mas nesse caso, a inserção é feita antes do elemento e não posteriormente. Nesse último exemplo da instrução INSERT (XML DML), a empregada Tânia tem o curso "Administração do Windows 2003 Server" registrado antes (before) de seu primeiro curso "Implementando o Exchange 2007". Nesse caso, o curso "Administração do Windows 2003 Server" torna-se o primeiro curso.

Embora a instrução INSERT (XML DML) sugira uma inserção, é preciso utilizar o comando UPDATE já que a inserção é feita no documento XML, mas isso configura uma alteração de seu valor original.

Este artigo é a parte 2 de 2 da seguinte série:
  1. SQL Server 2005 New Features: Os métodos XML - Parte 1
  2. SQL Server 2005 New Features: Os métodos XML - Parte 2

Muito bom, agora para quem faz uso do 2005 esta belezinha colegas, so fazer uso, isso que estava faltando para que os usuários do 2000 não sofressem tanto em trabalhos com Strings grandes e terem que quebras a variavel Text em uso de procedures para recebe-las como parametros.... valeu e abraços...