Partilhar via


Funções do construtor (XQuery)

Aplica-se a:SQL Server

De uma entrada especificada, as funções do construtor criam instâncias de qualquer tipo atômico interno XSD definido pelo usuário.

Sintaxe

  
TYP($atomicvalue as xdt:anyAtomicType?  
  
) as TYP?  
  

Argumentos

$strval
A cadeia de caracteres que será convertida.

TYP
Qualquer tipo XSD interno.

Comentários

Há suporte para construtores de tipos base e XSD derivados atômicos. No entanto, os subtipos de xs:duration, que inclui xdt:yearMonthDuration e xdt:dayTimeDuration, e xs:QName, xs:NMTOKEN e xs:NOTATION não têm suporte. Tipos atômicos definidos pelo usuário, que estejam disponíveis nas coleções de esquemas associadas também estarão disponíveis, desde que eles sejam direta ou indiretamente derivados dos tipos a seguir.

Tipos de base com suporte

Esses são os tipos base com suporte:

  • xs:string

  • xs:boolean

  • xs:decimal

  • xs:float

  • xs:double

  • xs:duration

  • xs:dateTime

  • xs:time

  • xs:date

  • xs:gYearMonth

  • xs:gYear

  • xs:gMonthDay

  • xs:gDay

  • xs:gMonth

  • xs:hexBinary

  • xs:base64Binary

  • xs:anyURI

Tipos derivados com suporte

Estes são os tipos derivados com suporte:

  • xs:normalizedString

  • xs:token

  • xs:language

  • xs:Name

  • xs:NCName

  • xs:ID

  • xs:IDREF

  • xs:ENTITY

  • xs:integer

  • xs:nonPositiveInteger

  • xs:negativeInteger

  • xs:long

  • xs:int

  • xs:short

  • xs:byte

  • xs:nonNegativeInteger

  • xs:unsignedLong

  • xs:unsignedInt

  • xs:unsignedShort

  • xs:unsignedByte

  • xs:positiveInteger

O SQL Server também oferece suporte para dobra constante para invocações de funções de construção nas seguintes maneiras:

  • Se o argumento for uma cadeia de caracteres literal, a expressão será avaliada durante a compilação. Quando o valor não atender às restrições de tipo, um erro estático será gerado.

  • Se o argumento for um literal de outro tipo, a expressão será avaliada durante a compilação. Quando o valor não atender às restrições de tipo, uma sequência vazia será retornada.

Exemplos

Este tópico fornece exemplos XQuery em instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

a. Usando a função dateTime() XQuery para recuperar descrições de produtos mais antigos

Neste exemplo, um documento XML de exemplo é atribuído pela primeira vez a uma variável de tipo xml . Este documento contém três elementos de exemplo <ProductDescription> , com cada um que contém um <DateCreated> elemento filho.

A variável é então consultada para recuperar apenas aquelas descrições de produtos que tenham sido criados antes de uma data específica. Para fins de comparação, a consulta usa a função de construtor xs:dateTime() para digitar as datas.

declare @x xml  
set @x = '<root>  
<ProductDescription ProductID="1" >  
  <DateCreated DateValue="2000-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
<ProductDescription  ProductID="2" >  
  <DateCreated DateValue="2001-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
<ProductDescription ProductID="3" >  
  <DateCreated DateValue="2002-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
</root>'  
  
select @x.query('  
     for $PD in  /root/ProductDescription  
     where xs:dateTime(data( ($PD/DateCreated/@DateValue)[1] )) < xs:dateTime("2001-01-01T00:00:00Z")  
     return  
        element Product  
       {   
        ( attribute ProductID { data($PD/@ProductID ) },  
        attribute DateCreated { data( ($PD/DateCreated/@DateValue)[1] ) } )  
        }  
 ')  

Observe o seguinte na consulta anterior:

  • O FOR... A estrutura de loop WHERE é usada para recuperar o <elemento ProductDescription> que satisfaz a condição especificada na cláusula WHERE.

  • A função de construtor dateTime() é usada para construir valores de tipo dateTime para que possam ser comparados adequadamente.

  • A consulta então constrói o XML resultante. Como você está construindo uma sequência de atributos, vírgulas e parênteses são usados na construção XML.

Este é o resultado:

<Product   
   ProductID="1"   
   DateCreated="2000-01-01T00:00:00Z"/>  

Consulte Também

Construção XML (XQuery)
Funções XQuery em tipos de dados xml