共用方式為


XQuery 擴充函式 - sql:variable()

適用於:SQL Server

公開變數,其中包含 XQuery 運算式內的 SQL 關係型值。

語法

  
sql:variable("variableName") as xdt:anyAtomicType?  

備註

如系結關係型數據內部 XML 主題中所述,當您使用 XML 數據類型方法在 XQuery 內公開關係型值時,可以使用此函式。

例如, query() 方法 可用來針對儲存在 xml 資料類型變數或數據行中的 XML 實例指定查詢。 有時候,您可能也希望查詢使用 Transact-SQL 變數或參數中的值,將關係型和 XML 數據結合在一起。 若要這樣做,您可以使用 sql:variable 函式。

SQL 值會對應至對應的 XQuery 值,而且其類型會是相當於對應 SQL 類型的 XQuery 基底類型。

您只能參考 XML-DML insert 語句之來源表達式內容中的 xml 實例,否則您無法參考 xml 類型或 Common Language Runtime (CLR) 使用者定義型別的值

範例

A. 使用 sql:variable() 函式將 Transact-SQL 變數值帶入 XML

下列範例會建構由下列項目組成的 XML 實例:

  • 非 XML 資料行的值 (ProductID)。 sql:column() 函式可用來在 XML 中系結此值。

  • 另一個數據表中非 XML 資料行的值 (ListPrice)。 同樣地, sql:column() 會用來在 XML 中系結此值。

  • Transact-SQL 變數的值 (DiscountPrice)。 方法 sql:variable() 可用來將此值系結至 XML。

  • xml 類型資料列中的值 (ProductModelName) ,讓查詢更有趣。

此查詢如下:

DECLARE @price money  
  
SET @price=2500.00  
SELECT ProductID, Production.ProductModel.ProductModelID,CatalogDescription.query('  
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
  
       <Product   
           ProductID="{ sql:column("Production.Product.ProductID") }"  
           ProductModelID= "{ sql:column("Production.Product.ProductModelID") }"  
           ProductModelName="{/pd:ProductDescription[1]/@ProductModelName }"  
           ListPrice="{ sql:column("Production.Product.ListPrice") }"  
           DiscountPrice="{ sql:variable("@price") }"  
        />')   
FROM Production.Product   
JOIN Production.ProductModel  
ON Production.Product.ProductModelID = Production.ProductModel.ProductModelID  
WHERE ProductID=771  

請注意下列項目是從上一個查詢而來:

  • 方法內的 query() XQuery 會建構 XML。

  • 關鍵詞namespace是用來在 XQuery Prolog定義命名空間前置詞。 ProductModelName這是因為從類型數據行擷取CatalogDescription xml屬性值,而該數據行具有相關聯的架構。

以下是結果:

<Product ProductID="771" ProductModelID="19"   
         ProductModelName="Mountain 100"   
         ListPrice="3399.99" DiscountPrice="2500" />  

另請參閱

SQL Server XQuery 延伸模組函式
比較具類型的 XML 與不具類型的 XML
XML 資料 (SQL Server)
建立 XML 資料的執行個體
xml 資料類型方法
XML 資料修改語言 (XML DML)