Aracılığıyla paylaş


veriişlev (XQuery)

Belirtilen her öğe için yazılı olan değeri verir $arg.

fn:data ($arg as item()*) as xdt:untypedAtomic*

Bağımsız değişkenler

  • $arg
    Klavyeyle yazılan değerleri döndürülen öğe sırası.

Remarks

Girilen değerleri için geçerlidir:

  • Yazılı bir atomik değerinin atomik değeri değerdir.

  • Klavyeyle yazılan metin düğümünün dize değeri metin düğümünün değerdir.

  • Yazılı bir açıklaması açıklama dizesi değeri değerdir.

  • Yazılı bir işlem yönergesi işleme yönergesi hedef adı olmadan-yönergeyi, işlem içeriği değeridir.

  • Yazılı belge düğümü dize değerini değeridir.

Aşağıdakiler, öznitelik ve öğe düğümlerine uygulanır:

  • Bir öznitelik düğümü bir XML şema türü yazdıysanız, yazılan değeri yazılı, buna göre değerdir.

  • Öznitelik düğümü türlenmemiş yazılı değerine eşit bir örnek olarak verilen dize değeri ise, XDT:untypedAtomic.

  • Öğe düğümü yazdınız, yazılı değerini bir örnek olarak verilen dize değeri eşittir XDT:untypedAtomic.

Klavyeyle yazılan öğe düğümlerine uygulanır:

  • Öğe, basit içerik türü Data() öğenin yazılan değeri döndürür.

  • Xs:anyType, dahil olmak üzere karmaşık tür düğümse Data() statik bir hata döndürür.

Kullanarak da Data() belirtmek için aşağıdaki örneklerde gösterildiği gibi sık isteğe bağlı işlevdirData() işlev açıkça sorgu okunabilirliği artırır.Daha fazla bilgi için bkz:XQuery temelleri.

Belirtemezsiniz Data() oluşturulmuş XML, aşağıda gösterildiği üzerinde:

declare @x xml
set @x = ''
select @x.query('data(<SomeNode>value</SomeNode>)')

Örnekler

Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunlarındaki AdventureWorks veritabanındaki.Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.

C.Yazılı değerinin bir düğüm için data() XQuery işlevini kullanma

Aşağıdaki sorgu gösterilmiştir nasıl Data() işlev, bir öznitelik, öğe ve bir metin düğümü değerleri almak için kullanılır:

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS p1,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)

SELECT CatalogDescription.query(N'
 for $pd in //p1:ProductDescription
 return 
    <Root 
      ProductID = "{ data( ($pd//@ProductModelID)[1] ) }" 
      Feature =   "{ data( ($pd/p1:Features/wm:Warranty/wm:Description)[1] ) }" >
    </Root>
 ') as Result
FROM Production.ProductModel
WHERE ProductModelID = 19

Bu sonucu oluşur:

<Root ProductID="19" Feature="parts and labor"/>

Belirtildiği gibi Data() işlev, öznitelikleri oluşturmak yoluyla, isteğe bağlıdır.Belirtmezseniz, Data() işlev, örtülü olarak kabul edilir.Aşağıdaki sorgu, önceki sorguyu aynı sonuçlar verir:

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS p1,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)

SELECT CatalogDescription.query('
      for $pd in //p1:ProductDescription
         return 
          <Root  
                ProductID = "{ ($pd/@ProductModelID)[1] }"  
                Feature =   "{ ($pd/p1:Features/wm:Warranty/wm:Description)[1] }" >
           </Root>
 ') as Result
FROM Production.ProductModel
WHERE ProductModelID = 19

Aşağıdaki örnekte, örnekler görülmektedir Data() işlev gereklidir.

Aşağıdaki sorguda $ pd / p1:Specifications / malzeme <Material> öğeyi döndürür.Also, data($pd/p1:Specifications/ Material) returns character data typed as xdt:untypedAtomic, because <Material> is untyped.Giriş türlenmemiş olduğunda, sonucu Data() yazılanXDT:untypedAtomic.

SELECT CatalogDescription.query('
declare namespace p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
      for $pd in //p1:ProductDescription
         return 
          <Root>
             { $pd/p1:Specifications/Material }
             { data($pd/p1:Specifications/Material) }
           </Root>
 ') as Result
FROM Production.ProductModel
WHERE ProductModelID = 19

Bu sonucu oluşur:

<Root>
  <Material>Almuminum Alloy</Material>Almuminum Alloy
</Root>

In the following query, data($pd/p1:Features/wm:Warranty) returns a static error, because <Warranty> is a complex type element.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS p1,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)

SELECT CatalogDescription.query('
 <Root>
   {     /p1:ProductDescription/p1:Features/wm:Warranty }
   { data(/p1:ProductDescription/p1:Features/wm:Warranty) }
 </Root>
 ') as Result
FROM  Production.ProductModel
WHERE ProductModelID = 23