具類型與不具類型的 XML

您可以建立 xml 類型的變數、參數和資料行。此外,也可以選擇性地將 XML 結構描述的集合與 xml 類型的變數、參數和資料行建立關聯。在此情況下,此 xml 資料類型的執行個體即稱為具類型。非此種情況下的 XML 執行個體則稱為不具類型。

XML 結構描述提供下列項目:

  • 驗證的條件約束
    每當指派或修改了具類型的 xml 執行個體,SQL Server 就會驗證該執行個體。
  • 執行個體資料的相關資料類型資訊
    結構描述會提供 xml 資料類型執行個體中屬性和元素類型的相關資訊。這些類型資訊可提供給值更精確的運算語意。例如,十進位的數學運算可以在十進位值上執行,但不能在字串值上執行。因此,具類型的 XML 儲存會比不具類型的 XML 精簡很多。

您必須先使用建立 XML 結構描述集合註冊 XML 結構描述集合之後,才能夠建立 XML 類型的變數、參數或資料行。然後,您可以將 XML 結構描述集合與 xml 資料類型的變數、參數或資料行建立關聯。下列範例會說明執行方法。

範例

在下列範例中,會使用兩段式命名慣例來指定 XML 結構描述集合名稱。第一個部份是 AdventureWorks 結構描述名稱,而第二個部份是 XML 結構描述集合名稱。

A. 建立 xml 類型變數,並將結構描述集合與此變數建立關聯

下列範例會建立一個 xml 類型變數,並將結構描述集合與此變數建立關聯。範例中指定的結構描述集合已經匯入 AdventureWorks 資料庫。

DECLARE @x xml (Production.ProductDescriptionSchemaCollection) 

B. 建立具有 xml 類型資料行的資料表,並為此資料行指定結構描述

下列範例會建立具有 xml 類型資料行的資料表,並為此資料行指定結構描述:

CREATE TABLE T1(
 Col1 int, 
 Col2 xml (Production.ProductDescriptionSchemaCollection)) 

C. 將 xml 類型的參數傳送給預存程序

下列範例會將 xml 類型的參數傳送給預存程序,並為此變數指定結構描述:

CREATE PROCEDURE SampleProc 
  @ProdDescription xml (Production.ProductDescriptionSchemaCollection) 
AS 

請注意下列有關 XML 結構描述集合的項目:

  • XML 結構描述集合只適用於使用建立 XML 結構描述集合註冊它的資料庫中。
  • 如果您將字串轉換成具類型的 xml 資料類型,則剖析作業也會根據所指定集合中的 XML 結構描述命名空間,來執行驗證和設定類型。
  • 您可以將具類型的 xml 資料類型,轉換為不具類型的 xml 資料類型,反之亦然。

如需在 SQL Server 中產生 XML 之其他方法的詳細資訊,請參閱<產生 XML 執行個體>。在產生 XML 之後,可將它指派給 xml 資料類型的變數,或將它儲存在 xml 類型資料行以進行其他處理。

在資料類型的階層中,xml 資料類型會出現在 sql_variant 和使用者自訂類型的下面,但在任何內建類型的上面。

D. 指定 Facet 以約束具類型的 xml 資料行

對於具類型的 xml 資料行,您可以約束資料行,讓儲存在其中的每個執行個體只能有單一的最上層元素。作法是,在建立資料表時指定選擇性的 DOCUMENT Facet,如下列範例所示:

CREATE TABLE T(Col1 xml 
   (DOCUMENT Production.ProductDescriptionSchemaCollection))
GO
DROP TABLE T
GO

依預設,儲存在具類型的 xml 資料行中的執行個體,是儲存為 XML 內容,而非 XML 文件。這樣做可允許有下列項目:

  • 零個或者許多最上層元素
  • 最上層元素內的文字節點

您也可以藉由加入 CONTENT Facet,明確指定此行為,如下列範例所示:

CREATE TABLE T(Col1 xml(CONTENT Production.ProductDescriptionSchemaCollection))
GO -- Default

請注意,您可以在任何定義 xml 類型 (具類型的 xml ) 的地方,指定選擇性的 DOCUMENT/CONTENT Facet。例如,當您建立具類型的 xml 變數時,可以加入 DOCUMENT/CONTENT Facet,如下所示:

declare @x xml (DOCUMENT Production.ProductDescriptionSchemaCollection)

請參閱

概念

產生 XML 執行個體
XML 資料修改語言 (XML DML)
XML 資料類型
XML 應用程式範例

其他資源

xml 資料類型方法

說明及資訊

取得 SQL Server 2005 協助