Constructing XML Using FOR XML

Kwerenda zwraca wyniki w postaci zestawu zestaw wierszy.Można opcjonalnie pobrać formalne wyniki kwerendy SQL w formacie XML, określając FOR XML klauzula w kwerendzie.Klauzula FOR XML mogą być używane w kwerendach najwyższego poziom i kwerendy podrzędnej.Klauzulę FOR XML najwyższego poziom można używać tylko w instrukcja SELECT.W kwerendach sub FOR XML mogą być używane w INSERT, UPDATE i DELETE instrukcji.Może również służyć w instrukcji przypisania.

W klauzula FOR XML należy określić jeden z trybów:

  • NIEPRZETWORZONE

  • AUTOMATYCZNE

  • JAWNE

  • ŚCIEŻKA

Tryb RAW generuje pojedyncze <wiersz> element na wiersz w zestawie zestaw wierszy zwracanych przez instrukcję SELECT. Pisząc kwerend zagnieżdżonych FOR XML można generować hierarchii XML.

Tryb automatycznego ustawiania generuje zagnieżdżanie w wynikowym pliku XML za pomocą rozwiązania heurystyczne służące, w zależności od sposobu, w instrukcja SELECT została określona.Użytkownik ma minimalny kontrolę nad kształtem wygenerowany kod XML.Kwerend zagnieżdżonych FOR XML można zapisać do generowania hierarchii XML poza kształt XML, który jest generowany przez rozwiązania heurystyczne służące trybie AUTO.

Tryb JAWNE pozwala lepiej kontrolować kształt XML.Można mieszać atrybuty i elementy na będzie przy podejmowaniu decyzji kształt XML.Wymaga ono określonego formatu dla wynikowego zestawu zestaw wierszy wygenerowanych ze względu na wykonanie kwerendy.Format ten zestaw wierszy jest następnie mapowana do kształtu XML.Uprawnienia JAWNE trybu jest wymieszany atrybuty i elementy na będą, tworzenia otoki i zagnieżdżonych właściwości złożonej, utwórz wartości oddzielone przecinkami miejsca (na przykład atrybut Identyfikator zamówienia może mieć listę wartości IDENTYFIKATORA zamówienia,) i zawartość mieszana.

Jednak kwerendy JAWNE trybu pisania może być kłopotliwe.Niektóre z nowych możliwości FOR XML, takie jak pisania kwerend zagnieżdżonych trybu FOR XML RAW/AUTO/ścieżka i dyrektywy typu, zamiast JAWNEGO trybu do generowania hierarchie można użyć.Kwerend zagnieżdżonych FOR XML może prowadzić do dowolnego XML generujących przy użyciu trybu JAWNE.Aby uzyskać więcej informacji zobacz Nested FOR XML Queries i TYPE Directive in FOR XML Queries.

Tryb ścieżka wraz z zagnieżdżonych funkcji kwerendy FOR XML zapewnia elastyczność JAWNE trybu w prostszy sposób.

Tryby te obowiązują tylko w przypadku wykonywania kwerendy, dla których zostały ustawione.Nie mają one wpływu na wyniki wszystkie następne kwerendy.

COMPUTE BY oraz do PRZEGLĄDANIA klauzule

FOR XML nie jest prawidłowy dla dokonaj wyboru, używany z klauzula COMPUTE BY lub FOR BROWSE.Na przykład następujące spowoduje wystąpienie błędu:

SELECT TOP 5 SalesOrderID, UnitPrice 
FROM Sales.SalesOrderDetail 
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice) BY SalesOrderID
FOR XML AUTO

Klauzula FOR XML oraz nazwy serwerów

Gdy instrukcję SELECT z klauzula FOR XML określa four-part nazwę kwerendy, nazwa serwera nie jest zwracana w wynikowym dokumencie XML, gdy kwerenda jest wykonywana na komputerze lokalnym.Jednak nazwa serwera są zwracane jako four-part nazwy, gdy kwerenda jest wykonywane na serwerze sieciowym.

Na przykład należy wziąć pod uwagę tę kwerendę:

SELECT TOP 1 LastName
FROM ServerName.AdventureWorks.Person.Contact
FOR XML AUTO

Kiedy ServerName serwer lokalny, kwerenda zwraca następujące czynności:

<AdventureWorks.Person.Contact LastName="Achong" />

Kiedy ServerName serwer sieciowy, kwerenda zwraca następujące czynności:

<ServerName.AdventureWorks.Person.Contact LastName="Achong" />

Określając ten alias można uniknąć tej potencjalnej niejednoznaczności:

SELECT TOP 1 LastName
FROM ServerName.AdventureWorks.Person.Contact x
FOR XML AUTO 

Ta kwerenda zwraca następujące czynności:

<x LastName="Achong"/>