Sdílet prostřednictvím


Základní syntaxe klauzule FOR XML

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Režim FOR XML může být RAW, AUTO, EXPLICIT nebo PATH. Určuje tvar výsledného XML.

Důležité

Direktiva XMLDATA pro možnost FOR XML je zastaralá. Generování XSD použijte v případě režimů RAW a AUTO. V režimu EXPLICT neexistuje žádná náhrada direktivy XMLDATA. Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.

Syntaxe

Následuje základní syntaxe popsaná v klauzuli FOR (Transact-SQL).

[ FOR { BROWSE | <XML> } ]
<XML> ::=
XML
    {
      { RAW [ ('ElementName') ] | AUTO }
        [
           <CommonDirectives>
           [ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ]
           [ , ELEMENTS [ XSINIL | ABSENT ]
        ]
      | EXPLICIT
        [
           <CommonDirectives>
           [ , XMLDATA ]
        ]
      | PATH [ ('ElementName') ]
        [
           <CommonDirectives>
           [ , ELEMENTS [ XSINIL | ABSENT ] ]
        ]
     }

<CommonDirectives> ::=
   [ , BINARY BASE64 ]
   [ , TYPE ]
   [ , ROOT [ ('RootName') ] ]

Arguments

RAW [('ElementName')]

Vezme výsledek dotazu a transformuje každý řádek v sadě výsledků do elementu XML, který má obecný identifikátor , <row />jako značku elementu. Volitelně můžete zadat název prvku řádku při použití této direktivy. Výsledný kód XML použije zadaný ElementName jako prvek řádku vygenerovaný pro každý řádek. Další informace naleznete v tématu Použití REŽIMU RAW s FOR XML.

AUTO

Vrátí výsledky dotazu v jednoduchém vnořeném stromu XML. Každá tabulka v klauzuli FROM, pro kterou je v klauzuli SELECT uveden alespoň jeden sloupec, je reprezentována jako element XML. Sloupce uvedené v klauzuli SELECT jsou mapovány na příslušné atributy elementu. Další informace naleznete v tématu Použití automatického režimu s jazykem XML.

EXPLICITNÍ

Určuje, že tvar výsledného stromu XML je definován explicitně. Pomocí tohoto režimu musí být dotazy vytvořeny určitým způsobem, aby byly další informace o požadovaném vnoření explicitně specifikovány. Další informace naleznete v tématu Použití explicitního režimu s jazykem XML.

CESTA

Poskytuje jednodušší způsob, jak kombinovat prvky a atributy a zavést další vnoření pro reprezentaci složitých vlastností. K vytvoření tohoto typu XML ze sady řádků můžete použít dotazy v režimu FOR XML EXPLICIT, ale režim PATH poskytuje jednodušší alternativu k pravděpodobně těžkopádným dotazům v režimu EXPLICIT. Režim PATH společně s možností psát vnořené dotazy FOR XML a direktivu TYPE pro vrácení instancí typu XML umožňuje psát dotazy s menší složitostí. Nabízí alternativu k psaní většiny dotazů v režimu EXPLICIT. Režim PATH ve výchozím nastavení generuje obálku elementu <row> pro každý řádek v sadě výsledků. Volitelně můžete zadat název elementu. Pokud ano, zadaný název se použije jako název elementu obálky. Pokud zadáte prázdný řetězec (FOR XML PATH ('')), nevygeneruje se žádný element obálky. Další informace naleznete v tématu Použití režimu PATH s FOR XML.

MLDATA

Určuje, že má být vráceno vložené schéma XML-Data zredukované (XDR). Schéma je před dokument připojeno jako vložené schéma. Pracovní ukázku najdete v tématu Použití režimu RAW s jazykem XML.

XMLSCHEMA

Vrátí vložené schéma XML W3C (XSD). Volitelně můžete zadat identifikátor URI cílového oboru názvů při zadávání této direktivy. Tím se vrátí zadaný obor názvů ve schématu. Další informace naleznete v tématu Generování vloženého schématu XSD. Pracovní ukázku najdete v tématu Použití režimu RAW s jazykem XML.

PRVKY

Pokud je zadána možnost ELEMENTS, vrátí se sloupce jako dílčí prvky. Jinak se mapují na atributy XML. Tato možnost je podporována pouze v režimech RAW, AUTO a PATH. Můžete volitelně zadat XSINIL nebo ABSENT při použití této direktivy. XSINIL specifikuje, že u hodnot sloupce NULL by měl být vytvořen prvek, který má atribut xsi:nil nastavený na hodnotu True. Ve výchozím nastavení nebo když je funkce ABSENCE zadána společně s elementy, nejsou vytvořeny žádné prvky pro hodnoty NULL. Pracovní ukázku naleznete v tématu Použití REŽIMU RAW s FOR XML a Použití automatického režimu s FOR XML.

BINARY BASE64

Pokud je zadána možnost BINARY Base64, jsou všechna binární data vrácená dotazem reprezentována ve formátu kódování base64. Chcete-li načíst binární data pomocí režimu RAW a EXPLICIT, musí být tato možnost zadána. V režimu AUTO se ve výchozím nastavení binární data vrátí jako odkaz. Pracovní ukázku najdete v tématu Použití režimu RAW s jazykem XML.

TYPE

Určuje, že dotaz vrátí výsledky jako typ XML . Další informace naleznete v tématu Direktiva TYPE v dotazech FOR XML.

ROOT [('RootName')]

Určuje, že se do výsledného XML přidá jeden element nejvyšší úrovně. Volitelně můžete zadat název kořenového elementu, který se má vygenerovat. Výchozí hodnota je <root>.

Poznámky

Dokumentaci ke klauzuli, která platí také pro Azure SQL Database nebo SQL databázi v prostředí Fabric, najdete v tématu FOR XML (SQL Server).