Udostępnij za pośrednictwem


Przykład: Trwa pobieranie informacji o pracowniku

W tym przykładzie pobiera identyfikator pracownika i nazwisko pracownika, dla każdego pracownika.W AdventureWorks2008R2 bazy danych, employeeID można otrzymać od BusinessEntityID kolumna w Employee tabela.Nazwiska pracowników, można otrzymać od Person tabela. BusinessEntityID kolumna można używać do łączyć tabele.

Przyjmijmy, ma dla XML JAWNE transformacja do generowania XML, jak pokazano poniżej:

<Employee EmpID="1" >
  <Name FName="Ken" LName="Sánchez" />
</Employee>
...

Ponieważ istnieją dwa poziomy w hierarchii, byłyby dwa zapisu SELECT kwerendy i stosowanie wszystkich Unii.Jest to pierwszy kwerendy, która pobiera wartości dla <Employee> element i jego atrybuty.Program query przypisuje 1 jako Tag wartość dla <Employee> element i NULL jako Parent, ponieważ jest elementem najwyższego poziom.

SELECT 1    as Tag,
       NULL as Parent,
       E.BusinessEntityID AS [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID;

Jest drugą kwerendę.Pobiera wartości dla <Name> elementu.Przypisuje 2 jako Tag wartość dla <Name> element i 1 jako Parent identyfikacji wartość znacznika <Employee> jako nadrzędny.

SELECT 2 as Tag,
       1 as Parent,
       E.BusinessEntityID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID;

Łączenie tych kwerend z UNION ALl zastosowanie FOR XML EXPLICITi określ wymagane ORDER BY klauzula.Należy najpierw posortować zestawu zestaw wierszy przez BusinessEntityID a następnie według nazwy tak, aby wartości NULL w nazwie pierwszej.Za wykonanie następującej kwerendy bez klauzula dla XML, można wyświetlić universal tabela wygenerowane.

To jest kwerenda końcowego:

SELECT 1    as Tag,
       NULL as Parent,
       E.BusinessEntityID as [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID
UNION ALL
SELECT 2 as Tag,
       1 as Parent,
       E.BusinessEntityID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID
ORDER BY [Employee!1!EmpID],[Name!2!FName]
FOR XML EXPLICIT;

Jest to wynik częściowy:

<Employee EmpID="1">

<Name FName="Ken" LName="Sánchez" />

</Employee>

<Employee EmpID="2">

<Name FName="Terri" LName="Duffy" />

</Employee>

...

Pierwszy SELECT Określa nazwy kolumn w wynikowym zestawie zestaw wierszy.Nazwy te tworzą dwa kolumna grup.Grupy o Tag wartość 1 kolumna Nazwa identyfikuje Employee jako element i EmpID jako atrybut.Grupa inne kolumna ma Tag wartość 2 kolumna i identyfikuje <Name> jako element i FName i LName jako atrybuty.

W poniższej tabela przedstawiono częściową zestaw wierszy wygenerowanego przez kwerendę:

Tag Parent  Employee!1!EmpID Name!2!FName Name!2!LName

--- ------  ---------------- ------------ ------------

1   NULL    1                NULL         NULL

2   1       1                Ken          Sánchez

1   NULL    2                NULL         NULL

2   1       2                Terri        Duffy

1   NULL    3                NULL         NULL

2   1       3                Roberto      Tamburello

...

Jest to, jak wiersze w tabela uniwersalnych są przetwarzane do wyprodukowania wynikowy drzewo XML:

Określa pierwszy wiersz Tag wartość 1.Dlatego kolumna grupy, który ma Tag wartość 1 jest identyfikowany Employee!1!EmpID.Ta kolumna określa Employee jako nazwę elementu. <Employee> Element jest tworzony w ma EmpID atrybuty.Odpowiednie wartości kolumna są przypisane do tych atrybutów.

Drugi wiersz ma Tag wartość 2.Dlatego grupy kolumn o Tag wartość 2 nazwy kolumna Name!2!FName, Name!2!LName, jest identyfikowana.Te kolumna zidentyfikować nazwy Name jako nazwę elementu.A <Name> utworzeniu elementu, który ma FName i LName atrybuty.Odpowiednie wartości kolumna są przypisywane do tych atrybutów.Identyfikuje ten wiersz 1 jako Parent.Ten element podrzędność jest dodawany do poprzedniego <Employee> elementu.

Ten proces jest powtarzany dla pozostałych zestaw wierszy w zestawie zestaw wierszy.Uwaga kolejność zestaw wierszy tabela universal tak dla XML JAWNE można przetwarzać zestaw wierszy w kolejności i wygenerować plik XML, który ma znaczenie.

Zobacz także

Odwołanie