Share via


SQL:variable() işlevi (XQuery)

XQuery ifade içinde bir sql İlişkisel değer içeren değişken sergiler.

Sözdizimi

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

Açıklamalar

Konu altında açıklandığı gibi Bağlama ilişkisel veri içinde xml, kullandığınızda bu işlev kullanabilirsiniz xml veri türü yöntemleri XQuery içindeki ilişkisel bir değeri göstermek için.

Örneğin, query() yöntem depolanan xml örnek karşı bir sorgu belirtmek için kullanılan bir xml veri türü, değişken veya sütun.Bazen de sorgunuzu değerleri kullanmak isteyebilirsiniz bir Transact-SQL değişkeni veya parametresi, ilişkisel getirilecek ve xml verilerini birlikte.Bunu yapmak için kullandığınız sql:variable işlev.

sql değeri karşılık gelen bir XQuery değerine eşleştirilir ve kendi türüne karşılık gelen sql türü için eşdeğer bir XQuery temel tür olacaktır.

Yalnızca başvuru yapabilirsiniz bir xml xml dml, kaynak deyim bağlamında örnek ekleme deyimini; Aksi halde türü olan değerleri başvuramaz xml veya bir ortak dil çalışma zamanı (clr) kullanıcı tanımlı tür.

Örnekler

A.Sql:variable() kullanma işlev xml Transact-sql değişken değeri getirmek için

Aşağıdaki örnek, aşağıdakilerden oluşan bir xml örneği oluşturur:

  • Bir değer (ProductID)-xml sütun.The sql:column() function is used to bind this value in the XML.

  • Bir değer (ListPrice) xml olmayan bir kullanıcı tarafından sütun başka bir tablo.Yine, sql:column() Bu değer xml. bağlamak için kullanılır

  • Bir değer (DiscountPrice) gelen bir Transact-SQL değişkeni.The sql:variable() method is used to bind this value into the XML.

  • Bir değer (ProductModelName) gelen bir xml türü sütun, sorguyu daha ilginç yapmak için.

Bu sorgu şöyledir:

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

Önceki sorgudan aşağıdakilere dikkat edin:

  • XQuery içindeki query() yöntem oluşturur xml.

  • The namespace keyword is used to define a namespace prefix in the XQuery Prolog.Bunun yapılmasının nedeni ProductModelName öznitelik değeri alınan CatalogDescription xml türü sütun, ilişkili bir şemaya sahip olduğu

Bu sonucu verir:

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