Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1168
Assunto : SQL Server
Titulo: Acessando campos e variáveis de dentro do XPATH

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon


O XML tem se tornado cada vez mais importante na armazenagem de dados. Que seja para os nossos dados, quer seja para dados administrativos, tal como query plans e informações de extended events, pesquisar informações em campos XML tem se tornado mais e mais importante.

Um truque muito interessante e que torna as pesquisas ainda mais versáteis é poder, dentro de uma expressão xquery, fazer referência a colunas da tabela ou a variáveis do T-SQL.

Um exemplo bem simples para demonstrar a sintaxe seria algo como :


SELECT c1, c2, c3
FROM T
WHERE c3.exist( '/root[@a=sql:column("c1")]') = 1
GO

Vamos utilizar dois exemplos com o AdventureWorks.

Primeiramente, identificar quantos candidatos a emprego existem para cada território atendido pela empresa. O endereço dos candidados encontra-se no curriculo, em XML.

Veja como fica:

select distinct CountryRegionCode,(select count(*) from HumanResources.JobCandidate
where Resume.exist('declare namespace qplan="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume";
//qplan:Address/qplan:Addr.Location/qplan:Location/qplan:Loc.CountryRegion[contains(.,sql:column("CountryRegionCode"))]')=1) qtd
from sales.SalesTerritory

Outro exemplo : Encontrar entre os modelos de produto aqueles que tem LaborHours menor que 1. Isso encontra-se nas instruções do modelo, que está em XML. Veja como fica :


declare @minHours int=1
select * from production.productmodel
where instructions.exist('declare namespace qplan="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"; //qplan:Location[@LaborHours < sql:variable("@minHours")]')=1



Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br