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