Funciones de constructor (XQuery)Constructor Functions (XQuery)

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Desde una entrada especificada, las funciones de constructor crean instancias de cualquiera de los tipos atómicos integrados o definidos por el usuario.From a specified input, the constructor functions create instances of any of the XSD built-in or user-defined atomic types.

SintaxisSyntax


TYP($atomicvalue as xdt:anyAtomicType?  

) as TYP?  

ArgumentosArguments

$strval$strval
Cadena que se convertirá.String that will be converted.

TIPOTYP
Cualquier tipo XSD integrado.Any built-in XSD type.

ComentariosRemarks

Se admiten constructores para tipos XSD atómicos base y derivados.Constructors are supported for base and derived atomic XSD types. Sin embargo, los subtipos de xs: Duration, que incluye xdt: yearmonthduration y xdt: daytimeduration, y xs: QName, xs: NMTOKEN, y xs: Notation no son compatibles.However, the subtypes of xs:duration, which includes xdt:yearMonthDuration and xdt:dayTimeDuration, and xs:QName, xs:NMTOKEN, and xs:NOTATION are not supported. Los tipos atómicos definidos por el usuario que están disponibles en las colecciones de esquemas asociadas también están disponibles, siempre que se deriven directa o indirectamente de los tipos siguientes.User-defined atomic types that are available in the associated schema collections are also available, provided they are directly or indirectly derived from the following types.

Tipos base compatiblesSupported Base Types

Éstos son los tipos base admitidos:These are the supported base types:

  • xs:stringxs:string

  • xs:booleanxs:boolean

  • xs:decimalxs:decimal

  • xs:floatxs:float

  • xs:doublexs:double

  • xs:durationxs:duration

  • xs:dateTimexs:dateTime

  • xs:timexs:time

  • xs:datexs:date

  • xs:gYearMonthxs:gYearMonth

  • xs:gYearxs:gYear

  • xs:gMonthDayxs:gMonthDay

  • xs:gDayxs:gDay

  • xs:gMonthxs:gMonth

  • xs:hexBinaryxs:hexBinary

  • xs:base64Binaryxs:base64Binary

  • xs:anyURIxs:anyURI

Tipos derivados compatiblesSupported Derived Types

Éstos son los tipos derivados admitidos:These are the supported derived types:

  • xs:normalizedStringxs:normalizedString

  • xs:tokenxs:token

  • xs:languagexs:language

  • xs:Namexs:Name

  • xs:NCNamexs:NCName

  • xs:IDxs:ID

  • xs:IDREFxs:IDREF

  • xs:ENTITYxs:ENTITY

  • xs:integerxs:integer

  • xs:nonPositiveIntegerxs:nonPositiveInteger

  • xs:negativeIntegerxs:negativeInteger

  • xs:longxs:long

  • xs:intxs:int

  • xs:shortxs:short

  • xs:bytexs:byte

  • xs:nonNegativeIntegerxs:nonNegativeInteger

  • xs:unsignedLongxs:unsignedLong

  • xs:unsignedIntxs:unsignedInt

  • xs:unsignedShortxs:unsignedShort

  • xs:unsignedBytexs:unsignedByte

  • xs:positiveIntegerxs:positiveInteger

    SQL Server también admite el doblado constante para invocaciones de funciones de construcción de las formas siguientes:SQL Server also supports constant folding for construction function invocations in the following ways:

  • Si el argumento es un literal de cadena, la expresión se evaluará durante la compilación.If the argument is a string literal, the expression will be evaluated during compilation. Cuando el valor no satisfaga las restricciones de tipo, se producirá un error estático.When the value does not satisfy the type constraints, a static error is raised.

  • Si el argumento es un literal de otro tipo, la expresión se evaluará durante la compilación.If the argument is a literal of another type, the expression will be evaluated during compilation. Cuando el valor no satisfaga las restricciones de tipo, se devolverá la secuencia vacía.When the value does not satisfy the type constraints, the empty sequence is returned.

EjemplosExamples

Este tema ofrecen ejemplos de XQuery con instancias XML almacenadas en varias xml columnas de tipo en la base de datos de AdventureWorks.This topic provides XQuery examples against XML instances that are stored in various xml type columns in the AdventureWorks database.

A.A. Usar la función dateTime() de XQuery para recuperar descripciones antiguas de productosUsing the dateTime() XQuery function to retrieve older product descriptions

En este ejemplo, un documento XML de ejemplo primero se asigna a un xml variable de tipo.In this example, a sample XML document is first assigned to an xml type variable. El documento contiene tres elementos <ProductDescription> de ejemplo, y cada uno de ellos contiene un elemento secundario <DateCreated>.This document contains three sample <ProductDescription> elements, with each one that contain a <DateCreated> child element.

A continuación, se realiza una consulta en la variable para recuperar solo las descripciones de producto que se crearon antes de una fecha específica.The variable is then queried to retrieve only those product descriptions that were created before a specific date. Para fines de comparación, la consulta utiliza la xs:DateTime() función constructora para escribir las fechas.For purposes of comparison, the query uses the xs:dateTime() constructor function to type the dates.

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 lo siguiente en la consulta anterior:Note the following from the previous query:

  • La estructura de bucle FOR ... Estructura de bucle de dónde se usa para recuperar el <ProductDescription > elemento que cumpla la condición especificada en la cláusula WHERE.The FOR ... WHERE loop structure is used to retrieve the <ProductDescription> element satisfying the condition specified in the WHERE clause.

  • El dateTime() de función de constructor se utiliza para construir dateTime escriba valores para que se puedan comparar adecuadamente.The dateTime() constructor function is used to construct dateTime type values so they can be compared appropriately.

  • Finalmente, la consulta construye el XML resultante.The query then constructs the resulting XML. Dado que se pretende construir una secuencia de atributos, en la construcción de XML se utilizan comas y paréntesis.Because you are constructing a sequence of attributes, commas and parentheses are used in the XML construction.

    El resultado es el siguiente:This is the result:

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

Vea tambiénSee Also

Construcción de XML ( XQuery ) XML Construction (XQuery)
Funciones de XQuery con el tipo de datos xmlXQuery Functions against the xml Data Type