Aracılığıyla paylaş


SQL:variable() işlev (XQuery)

Bir SQL ilişkisel değer XQuery ifade içeren bir deðiþken gösterir.

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

Remarks

Bu konu altında açıklandığı gibi Iç XML ilişkisel veri bağlamakullandığınızda , bu işlev kullanabilirsinizXML verilerini yöntemleri yazın... XQuery ilişkisel bir değer göstermek için.

Örneğin, Query() yöntem yönelik bir depolanan bir XML örnek bir sorgu belirtmek için kullanılırxml değişken veya sütun, veri türü. Bazı durumlarda sorgunuz, alınan değerleri kullan de isteyebilirsiniz bir Transact-SQL değişkeni veya parametresi, ilişkisel getirmeyi ve XML verilerini birlikte. Bunu yapmak için , kullandığınız SQL:variable işlev.

SQL değeri karşılık gelen XQuery değerine eşleştirilir ve türünü, karşılık gelen SQL tipine eşdeğerdir XQuery temel tür olacaktır.

Yalnızca başvurabilirsiniz bir xml kapsamında örnek XML DML, kaynak ifadesinin ifade ekleyin; aksi halde tür değerine başvuruda bulunamaz XML veya bir ortak dil çalışma zamanı (CLR) kullanıcı tanımlı tür.

Örnekler

C.Transact-SQL bir değişken değeri, XML'DE getirmeyi sql:variable() işlevini kullanma

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

  • Bir değer)ProductID) non-XML gelen sütun. The sql:sütun() işlev is used to bind this value in the XML.

  • Bir değer)ListPrice) non-XML gelen sütun başka bir tablodan. Yeniden sql:column() Bu değeri, XML'DE bağlamak için kullanılır.

  • Bir değer)DiscountPrice) arasında bir Transact-SQL değişken. The sql:variable() yöntem is used to bind this value into the XML.

  • Bir değer)ProductModelName) arasında bir xml sütun, sorgu daha ilginç hale getirmek için yazın.

Bu sorguyu oluşur:

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:

  • Içinde XQuery query() yöntem, XML oluşturur.

  • 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ınır CatalogDescription xml kendisiyle ilişkili bir şema olan sütuna yazın.

Bu sonucu oluşur:

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