Partilhar via


Funções do construtor (XQuery)

Aplica-se: 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, não há suporte para os subtipos de xs:duration, que incluem xdt:yearMonthDuration e xdt:dayTimeDuration, e xs:QName, xs:NMTOKEN e xs:NOTATION . 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 de XQuery em relação a instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

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

Neste exemplo, um documento XML de exemplo é atribuído primeiro a uma variável de tipo xml . Este documento contém três elementos de exemplo <ProductDescription> , cada um contendo 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 construtora 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 atende à condição especificada na cláusula WHERE.

  • A função construtora dateTime() é usada para construir valores do 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"/>  

Confira também

Construção XML (XQuery)
Funções XQuery em Tipos de Dados XML