Udostępnij za pośrednictwem


Przykład: Trwa pobieranie informacji pracowników

W tym przykładzie pobiera identyfikator pracownika i nazwiska pracowników, dla każdego pracownika.W bazie danych AdventureWorks the employeeID można uzyskać z tabela pracowników.Nazwiska pracowników można uzyskać z tabela Kontakt.kolumna ContactID może służyć do łączenia tabel.

Załóżmy, że mają do XML JAWNE transformacja do generowania XML, jak pokazano w poniższym:

<Employee EmpID="1" >
  <Name FName="Guy" LName="Gilbert" />
</Employee>
...

Ze względu na to, że dostępne są dwa poziomy w hierarchii, czy zapisać dwie kwerendy SELECT i zastosować UNION ALL.Jest to pierwszy kwerendy, która pobiera wartości <Employee> element i jego atrybuty. Kwerendy przypisuje 1 jako Tag wartość <Employee> elementu i wartość NULL jako Nadrzędny, ponieważ jest to element najwyższego poziom.

SELECT 1    as Tag,
       NULL as Parent,
       EmployeeID as [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID

Jest to drugą kwerendę.Pobiera ona wartości <Name> element. Przypisuje 2 jako Tag wartość elementu <Name> i 1 jako Nadrzędny <Employee> jako nadrzędne w stosunku do identyfikowania wartość znacznika.

SELECT 2 as Tag,
       1 as Parent,
       EmployeeID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID

Należy połączyć te kwerendy z UNION ALL, stosuje się do XML jawnych i określić wymagane klauzula ORDER BY.Zestaw wierszy najpierw według IDPracownika, a następnie według nazwy należy posortować tak, aby jako pierwsze występują wartości NULL w nazwie.Wykonując następującą kwerendę bez klauzula FOR XML, można wyświetlić tabela uniwersalnej generowane.

Jest to ostateczne kwerendy:

SELECT 1    as Tag,
       NULL as Parent,
       EmployeeID as [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID
UNION ALL
SELECT 2 as Tag,
       1 as Parent,
       EmployeeID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee E, Person.Contact C
WHERE  E.ContactID = C.ContactID
ORDER BY [Employee!1!EmpID],[Name!2!FName]
FOR XML EXPLICIT

Jest to wynik częściowy:

<Employee EmpID="1">
  <Name FName="Guy" LName="Gilbert" />
</Employee>
<Employee EmpID="2">
  <Name FName="Kevin" LName="Brown" />
</Employee>
...

SELECT określa nazwy kolumn w wynikowym zestawie zestaw wierszy.Nazwy te tworzą dwa kolumna grup.Grupa, która ma Tag wartość 1 kolumna Nazwa identyfikuje pracownika, jak element i EmpID jako atrybut. Inna grupa kolumna ma numer seryjny wartości 2 w kolumnie i identyfikuje <Name> jako element i FName i LName z atrybutami.

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

Tag Parent  Employee!1!EmpID Name!2!FName Name!2!LName
----------- ----------- ---------------- -------------------
1    NULL     1                NULL          NULL
2     1       1                Guy           Gilbert
1    NULL     2                NULL          NULL
2     1       2                Kevin         Brown
1    NULL     3                NULL          NULL
2     1       3                Roberto       Tamburello 
...

Jest to, jak wiersze w tabela uniwersalne są przetwarzane do wyprodukowania wynikowy drzewo składni XML:

Określa pierwszy wiersz Tag wartość 1.Dlatego grupie kolumna, która ma Tag wartość 1 jest identyfikowany, pracownik! 1! EmpID. To kolumna identyfikuje pracownika jako nazwy elementu.An <Employee> element is then created that has EmpID attributes.Odpowiadające kolumna przypisywania wartości do tych atrybutów.

Drugi wiersz ma Tag wartość 2.Dlatego grupie kolumna, która ma Tag wartości 2 w polu Nazwa kolumna Nazwa! 2! FName Nazwa! 2! LName, jest identyfikowana.Nazwy tych kolumn zidentyfikować nazwy jako nazwy elementu.A <Name> element jest tworzony z atrybutami FName i LName. Odpowiadających sobie wartości kolumna są następnie przypisywane do tych atrybutów.Ten wiersz określa 1 jako Nadrzędny.Ten element podrzędność jest dodawany do poprzedniego <Employee> element.

Ten proces jest powtarzany dla pozostałych zestaw wierszy w zestawie zestaw wierszy.Należy zwrócić uwagę, kolejność zestaw wierszy w tabela uniwersalnej FOR XML JAWNE można przetwarzać zestaw wierszy w kolejności i generuje plik XML, który ma znaczenie.

See Also

Reference