Udostępnij za pośrednictwem


Przykład: Badanie XMLType kolumny

Następująca kwerenda zawiera kolumny z xml typu.Kwerenda pobiera identyfikator modelu produktu, nazwa i czynności produkcyjnych w miejscu pierwszego z Instructions kolumna xml typu.

Przykład

USE AdventureWorks2008R2;
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

To jest wynikiem.Należy zauważyć, że tabela przechowuje instrukcje produkcji tylko niektóre modele produktu.Czynności produkcyjnych są zwracane jako podelementy z <ProductModelData> elementu w wyniku.

<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 kwerenda określa nazwę kolumna XML zwróconych przez XQuery, jak określono poniżej SELECT instrukcja, czynności produkcyjnych są zapakowane w elementu, który ma nazwę określonego.

USE AdventureWorks2008R2;
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

Jest to wynikiem:

<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>

Następująca kwerenda określa ELEMENTS dyrektywy.Dlatego zwracana jest zorientowany na element.XSINIL Opcji określonej z ELEMENTS dyrektywa zwraca <ManuSteps> elementów, nawet jeśli odpowiednią kolumna w zestawie zestaw wierszy jest NULL.

USE AdventureWorks2008R2;
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

Jest to wynikiem:

<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>

Zobacz także

Odwołanie