FOR XML 子句的基本語法

適用於:SQL ServerAzure SQL DatabaseAzure 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') ] ]

Azure SQL Database 的語法

如需同樣適用於 Azure SQL Database SELECT...FOR XML 子句的文件,請參閱 FOR XML (SQL Server)

引數

RAW [('ElementName')]

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

AUTO

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

EXPLICIT

指定產生之 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

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

BINARY BASE64

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

TYPE

指定查詢以 xml 類型傳回結果。 如需詳細資訊,請參閱 FOR XML 查詢中的 TYPE 指示詞

ROOT [('RootName')]

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

另請參閱