Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Dotaz SELECT vrátí výsledky jako sadu řádků. Volitelně můžete načíst formální výsledky dotazu SQL jako XML zadáním FOR XML klauzule v dotazu. Klauzuli FOR XML je možné použít v dotazech nejvyšší úrovně a v poddotazech. Klauzuli nejvyšší úrovně FOR XML lze použít pouze v SELECT příkazu. Vpodch FOR XMLINSERTUPDATEDELETE
FOR XML lze také použít v příkazech přiřazení.
FOR XML V klauzuli zadáte jeden z těchto režimů:
RAWAUTOEXPLICITPATH
Režim RAW vygeneruje jeden <row> prvek na řádek v sadě řádků, který je vrácen příkazem SELECT . Hierarchii XML můžete vygenerovat zápisem vnořených FOR XML dotazů.
Režim AUTO vygeneruje vnoření ve výsledném XML pomocí heuristiky na základě způsobu, jakým SELECT je příkaz zadán. Máte minimální kontrolu nad tvarem vygenerovaného XML. Vnořené FOR XML dotazy lze zapsat tak, aby generovaly hierarchii XML nad rámec obrazce XML, který je generován AUTO heuristiky režimu.
Režim EXPLICIT umožňuje větší kontrolu nad tvarem XML. Při rozhodování o tvaru XML můžete kombinovat atributy a prvky najednou. Pro výslednou sadu řádků, která se generuje z důvodu provádění dotazu, vyžaduje určitý formát. Tento formát sady řádků se pak namapuje na obrazec XML. Výkonem EXPLICIT režimu je kombinovat atributy a prvky na vůle, vytvářet obálky a vnořené komplexní vlastnosti, vytvářet hodnoty oddělené mezerami (například OrderID atribut může mít seznam hodnot ID objednávky) a smíšený obsah.
Dotazy v režimu psaní EXPLICIT ale můžou být těžkopádné. K vygenerování hierarchií můžete použít některé nové FOR XML funkce, jako je psaní vnořených FOR XML RAWAUTO, nebo PATH dotazů v režimu a TYPE direktivaEXPLICIT. Vnořené FOR XML dotazy můžou vytvořit libovolný KÓD XML, který můžete vygenerovat pomocí EXPLICIT režimu. Další informace naleznete v tématu Použití vnořených dotazů FOR XML a direktivy TYPE v dotazech FOR XML.
Režim PATH společně s funkcí vnořeného FOR XML dotazu poskytuje flexibilitu EXPLICIT režimu jednodušším způsobem.
Tyto režimy platí pouze pro spuštění dotazu, pro který jsou nastavené. Nemají vliv na výsledky následných dotazů.
FOR XML není platný pro žádný výběr, který se používá s klauzulí FOR BROWSE .
Examples
Následující SELECT příkaz načte informace z Sales.Customer databází a Sales.SalesOrderHeader tabulek AdventureWorks2025 . Tento dotaz určuje AUTO režim v klauzuli FOR XML :
USE AdventureWorks2022;
GO
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.STATUS
FROM Sales.Customer Cust
INNER JOIN Sales.SalesOrderHeader OrderHeader
ON Cust.CustomerID = OrderHeader.CustomerID
FOR XML AUTO;
Klauzule FOR XML a názvy serverů
SELECT Pokud příkaz s FOR XML klauzulí určuje název čtyřdílné části dotazu, název serveru se při spuštění dotazu na místním počítači nevrátí ve výsledném dokumentu XML. Při spuštění dotazu na síťovém serveru se ale název serveru vrátí jako čtyřdílný název.
Představte si například tento dotaz:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person
FOR XML AUTO;
Místní server: Pokud ServerName je místní server, vrátí dotaz následující text:
<AdventureWorks2022.Person.Person LastName="Achong" />
Síťový server: Pokud ServerName se jedná o síťový server, vrátí dotaz následující text:
<ServerName.AdventureWorks2022.Person.Person LastName="Achong" />
Vyhněte se nejednoznačnosti: Tento potenciální nejednoznačnost se dá vyhnout zadáním tohoto aliasu:
SELECT TOP 1 LastName
FROM ServerName.AdventureWorks2022.Person.Person x
FOR XML AUTO;
Nyní nejednoznačný dotaz vrátí následující text:
<x LastName="Achong"/>