Partilhar via


Funções do construtor (XQuery)

Aplica-se a:SQL Server

A partir de uma entrada especificada, as funções do construtor criam instâncias de qualquer um dos tipos atômicos XSD internos ou definidos pelo usuário.

Sintaxe

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

Argumentos

$strval
String que será convertida.

TYP
Qualquer tipo de XSD incorporado.

Comentários

Os construtores são suportados para tipos XSD atômicos básicos e derivados. No entanto, os subtipos de xs:duration, que inclui xdt:yearMonthDuration e xdt:dayTimeDuratione xs:QName, xs:NMTOKENe xs:NOTATION não são suportados. Os tipos atômicos definidos pelo usuário que estão disponíveis nas coleções de esquemas associadas também estão disponíveis, desde que sejam direta ou indiretamente derivados dos seguintes tipos.

Tipos básicos suportados

Estes são os tipos de base suportados:

  • xs:string

  • xs:booleano

  • xs:decimal

  • xs:flutuar

  • xs:duplo

  • xs:duração

  • xs:dateTime

  • xs:tempo

  • xs:data

  • xs:gAnoMês

  • xs:gAno

  • xs:gMonthDay

  • xs:gDia

  • xs:gMês

  • xs:hexBinary

  • xs:base64binário

  • xs:anyURI

Tipos derivados suportados

Estes são os tipos derivados suportados:

  • xs:normalizedString

  • xs:token

  • xs:idioma

  • xs:Nome

  • xs:NCName

  • xs:ID

  • xs:IDREF

  • xs:ENTIDADE

  • xs:inteiro

  • xs:nonPositiveInteger

  • xs:negativeInteger

  • xs:longo

  • xs:int

  • xs:curto

  • xs:byte

  • xs:nonNegativeInteger

  • xs:unsignedLong

  • xs:unsignedInt

  • xs:unsignedShort

  • xs:unsignedByte

  • xs:positiveInteger

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

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

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

Exemplos

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

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

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

A variável é então consultada para recuperar apenas as descrições de produtos que foram criadas 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 da 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 do construtor dateTime() é usada para construir valores de tipo de dateTime para que possam ser comparados adequadamente.

  • Em seguida, a consulta 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"/>  

Ver também

Construção XML (XQuery)
funções XQuery em relação ao tipo de dados xml