Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este exemplo ilustra o uso da diretiva HIDE . Essa diretiva é útil quando você deseja que a consulta retorne um atributo para ordenar as linhas na tabela universal retornada pela consulta, mas você não deseja que esse atributo no documento XML resultante final.
Essa consulta constrói este XML:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<Summary> element from XML stored in CatalogDescription column
</SummaryDescription>
</Summary>
</ProductModel>
Essa consulta gera o XML desejado. A consulta identifica dois grupos de colunas com 1 e 2 como valores de tag nos nomes das colunas.
Essa consulta usa o método query() (tipo de dados xml) do tipo de dados xml para consultar a coluna CatalogDescription do tipo xml para recuperar a descrição resumida. A consulta também usa o método value() (tipo de dados xml) do tipo de dados xml para recuperar o valor ProductModelID da coluna CatalogDescription. Esse valor não é necessário no XML resultante, mas é necessário para classificar o conjunto de linhas resultante. Portanto, o nome [Summary!2!ProductModelID!HIDE]da coluna inclui a diretiva HIDE . Se esta coluna não estiver incluída na instrução SELECT, você terá que classificar o conjunto de linhas por [ProductModel!1!ProdModelID] e [Summary!2!SummaryDescription] esse é o tipo xml e você não pode usar a coluna de tipo xml em ORDER BY. Portanto, a coluna adicional [Summary!2!ProductModelID!HIDE] é adicionada e, em seguida, é especificada na cláusula ORDER BY.
USE AdventureWorks2012;
GO
SELECT 1 as Tag,
0 as Parent,
ProductModelID as [ProductModel!1!ProdModelID],
Name as [ProductModel!1!Name],
NULL as [Summary!2!ProductModelID!hide],
NULL as [Summary!2!SummaryDescription]
FROM Production.ProductModel
WHERE CatalogDescription is not null
UNION ALL
SELECT 2 as Tag,
1 as Parent,
ProductModelID,
Name,
CatalogDescription.value('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
(/PD:ProductDescription/@ProductModelID)[1]', 'int'),
CatalogDescription.query('
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/pd:ProductDescription/pd:Summary')
FROM Production.ProductModel
WHERE CatalogDescription is not null
ORDER BY [ProductModel!1!ProdModelID],[Summary!2!ProductModelID!hide]
FOR XML EXPLICIT
go
Este é o resultado:
<ProductModel ProdModelID="19" Name="Mountain-100">
<Summary>
<SummaryDescription>
<pd:Summary xmlns:pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns="">
<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">Our top-of-the-line competition mountain bike. Performance-enhancing options include the innovative HL Frame, super-smooth front suspension, and traction for all terrain. </p1:p>
</pd:Summary>
</SummaryDescription>
</Summary>
</ProductModel>