Przykład: Podczas badania XMLType kolumny
Następująca kwerenda zawiera kolumny xml Typ. Kwerenda pobiera identyfikator modelu produktu, nazwę i kroki produkcji w miejscu pierwszego z Instructions Kolumna xml Typ.
Przykład
USE AdventureWorks;
GO
SELECT ProductModelID, Name,
Instructions.query('
declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"
/MI:root/MI:Location[1]/MI:step
')
FROM Production.ProductModel
FOR XML RAW ('ProductModelData')
GO
Poniżej pokazano wynik.Należy zauważyć, że w tabeli są przechowywane instrukcje wytwarzania tylko dla niektórych modeli produktu.Kroki wytwarzania są zwracane jako podelementy elementu <ProductModelData> w wynikach.
<ProductModelData ProductModelID="5" Name="HL Mountain Frame" />
<ProductModelData ProductModelID="6" Name="HL Road Frame" />
<ProductModelData ProductModelID="7" Name="HL Touring Frame">
<MI:step> ... </MI:step>
<MI:step> ... </MI:step>
</ProductModelData>
Jeśli kwerendy określa nazwę kolumna w formacie XML, zwracane przez XQuery, jak określono w następujących SELECT Instrukcja, kroki produkcji są pakowane w elemencie o określonej nazwie.
USE AdventureWorks;
GO
SELECT ProductModelID, Name,
Instructions.query('
declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"
/MI:root/MI:Location[1]/MI:step
') as ManuSteps
FROM Production.ProductModel
FOR XML RAW ('ProductModelData')
go
Oto wynik:
<ProductModelData ProductModelID="5" Name="HL Mountain Frame" />
<ProductModelData ProductModelID="6" Name="HL Road Frame" />
<ProductModelData ProductModelID="7" Name="HL Touring Frame">
<ManuSteps>
<MI:step ... </MI:step>
<MI:step ... </MI:step>
</ManuSteps>
</ProductModelData>
Określa, w następującej kwerendzie ELEMENTS dyrektywa. W związku z tym wynik zwracany jest zorientowane na element.The XSINIL option specified with the ELEMENTS directive returns the <ManuSteps> elements, even if the corresponding kolumna in the zestaw wierszy is NULL.
USE AdventureWorks;
GO
SELECT ProductModelID, Name,
Instructions.query('
declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"
/MI:root/MI:Location[1]/MI:step
') as ManuSteps
FROM Production.ProductModel
FOR XML RAW ('ProductModelData'), root('MyRoot'), ELEMENTS XSINIL
go
Oto wynik:
<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
<ProductModelData>
<ProductModelID>6</ProductModelID>
<Name>HL Road Frame</Name>
<ManuSteps xsi:nil="true" />
</ProductModelData>
<ProductModelData>
<ProductModelID>7</ProductModelID>
<Name>HL Touring Frame</Name>
<ManuSteps>
<MI:step ... </MI:step>
<MI:step ...</MI:step>
...
</ManuSteps>
</ProductModelData>
</MyRoot>