Aracılığıyla paylaş


SQL:variable() işlevi (XQuery)

XQuery ifade içinde bir sql iliş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şlevi kullanabilirsiniz xml veri türü yöntemleri Ilişkisel değer içinde XQuery duyurmak için.

Örneğin, query() yöntemi depolanan xml örneği bir sorgu belirtmek için kullanılan bir xmlveri türü, değişken veya sütun. Bazen de sorgu değerleri kullanmak isteyebilirsiniz bir Transact-SQLdeğişkeni veya parametresi ilişkisel getirmek ve xml verilerini birlikte. Bunu yapmak için sql:variable işlevi.

sql değeri karşılık gelen bir XQuery değer eşlenen ve kendi türüne karşılık gelen sql türü eşdeğerdir XQuery temel tür olacaktır.

Sadece bakabilirsiniz bir xmlörnek bir xml dml kaynak ifade bağlamında INSERT deyimi; Aksi takdirde bu tür değerlere başvuruda bulunamaz xml veya bir ortak dil çalışma zamanı (clr) kullanıcı tanımlı türü.

Örnekler

A.XML'i bir Transact-sql değişken değeri getirmek için sql:variable() işlevini kullanma

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

  • Değer (ProductID) olmayan xml sütundan. Sql:column() işlevi bu değer xml içinde bağlamak için kullanılır.

  • Değer (ListPrice) başka bir tablodan olmayan xml sütundan. Yine, sql:column()Bu değer xml içinde bağlamak için kullanılır.

  • Değer (DiscountPrice) gelen bir Transact-SQLdeğişkeni. sql:variable()Yöntem, XML'i bu değeri bağlamak için kullanılır.

  • Değer (ProductModelName) gelen bir xmltürü sütununda, sorguyu daha ilginç yapmak için.

Sorgu budur:

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

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öntemi xml yapıları.

  • namespaceAnahtar kelime bir ad alanı önekini tanımlamak için kullanılan XQuery giriş. Bu çünkü yapılır ProductModelNameöznitelik değeri gelen alınır CatalogDescription xmltürü sütununda, bir şema görüneceği ile ilişkili olduğu

Sonuç şudur:

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

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

Ayrıca bkz.

Başvuru

SQL Server XQuery uzantısı işlevleri

Kavramlar

Yazılı xml yazılmamış xml karşılaştırın

DEL - Implementing XML in SQL Server

xml veri örnekleri oluşturma

xml veri değişikliği dili (xml dml)

Diğer Kaynaklar

XML veri türü yöntemleri