FOR XML 子句的基本語法

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Microsoft Fabric 中的 SQL 資料庫

FOR XML 模式可以是 RAW、AUTO、EXPLICIT 或 PATH。 它可以決定產生 XML 的外觀。

重要

FOR XML 選項的 XMLDATA 指示詞已淘汰。 在 RAW 和 AUTO 模式的情況下,請使用 XSD 產生。 在 EXPLICT 模式中,沒有可替代 XMLDATA 指示詞的替代項。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

語法

下列是 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') ] ]

引數

原始 ['ElementName']

使用查詢結果並將結果集中的每一個資料列轉換為 XML 元素,該元素包含作為元素標記的泛用識別碼 <row />。 當您使用此指示詞時,您可以選擇性地指定資料列元素的名稱。 產生的 XML 將會使用指定的 ElementName 作為針對每個資料列所產生的資料列元素。 如需詳細資訊,請參閱 搭配 FOR XML 使用 RAW 模式

自動

將查詢結果以簡易巢狀 XML 樹狀結構傳回。 FROM 子句中的每個資料表至少都有一個資料行是列在 SELECT 子句中,這些資料表是以 XML 元素表示。 SELECT 子句中所列的資料行會對應至適當的元素屬性。 如需詳細資訊,請參閱 搭配 FOR XML 使用 AUTO 模式

明確

指定產生的 XML 樹狀結構會被明確定義。 使用此模式時,查詢必須以特定方式撰寫,才能明確指定您所需巢狀結構的額外資訊。 如需詳細資訊,請參閱 搭配 FOR XML 使用 EXPLICIT 模式

PATH

提供更簡單的方式來混合元素與屬性,並引用其他的巢狀來代表複雜的屬性。 您可以使用 FOR XML EXPLICIT 模式查詢來建構從資料列集而來的這類 XML,但是 PATH 模式對於可能會比較繁雜的 EXPLICIT 模式查詢提供較簡單的替代方案。 PATH 模式結合能撰寫巢狀 FOR XML 查詢及 TYPE 回傳 XML 類型實例的指令,讓你能以較低的複雜度撰寫查詢。 它為撰寫大部份的 EXPLICIT 模式查詢提供替代方案。 根據預設,PATH 模式會針對結果集中的每個資料列產生 <row> 元素包裝函式。 您可以選擇性地指定元素名稱。 如果是這樣,將使用指定的名稱作為包裝元素名稱。 如果您提供空白字串 (FOR XML PATH ('')),就不會產生包裝函數元素。 如需詳細資訊,請參閱 搭配 FOR XML 使用 PATH 模式

MLDATA

指定應傳回內嵌的 XML-Data Reduced (XDR) 結構描述。 結構描述會作為內嵌結構描述附加在文件前端。 如需實用範例,請參閱 搭配 FOR XML 使用 RAW 模式

XMLSCHEMA

傳回內嵌式 W3C XML 結構描述 (XSD)。 在指定此指示詞時,您可以選擇性地指定目標命名空間 URI。 這將會傳回結構描述中指定的命名空間。 如需詳細資訊,請參閱 產生內嵌 XSD 結構描述。 如需實用範例,請參閱 搭配 FOR XML 使用 RAW 模式

元素

若指定了 ELEMENTS 選項,則資料行會以子元素傳回。 否則,它們會對應至 XML 屬性。 此選項只在 RAW、AUTO 以及 PATH 模式中才有支援。 在使用此指示詞時,您可以選擇性地指定 XSINIL 或 ABSENT。 XSINIL 指定針對 NULL 資料行值建立其 xsi:nil 屬性設為 True 的元素。 依預設或當同時指定 ABSENT 與 ELEMENTS 時,就不會針對 NULL 值建立任何元素。 如需實用範例,請參閱 搭配 FOR XML 使用 RAW 模式搭配 FOR XML 使用 AUTO 模式

二進位制Base64

若指定 BINARY Base64 選項,則任何由查詢所傳回的二進位資料都會以 base64 編碼格式表示。 若要使用 RAW 和 EXPLICIT 模式擷取二進位資料,必須指定此選項。 在 AUTO 模式下,二進位資料在預設下是以參考來傳回。 如需實用範例,請參閱 搭配 FOR XML 使用 RAW 模式

TYPE

指定查詢以 xml 類型傳回結果。 欲了解更多資訊,請參閱 TYPE FOR XML 查詢中的指令

根 [RootName]

指定將單一最上層元素加入產生的 XML 中。 您可以選擇性地指定要產生的根元素名稱。 預設值是 <root>

備註

關於同樣適用於 Azure SQL 資料庫或 Fabric 中的 SQL 資料庫的SELECT... FOR XML條款文件,請參見 FOR XML(SQL Server)。