Función FOR

La función del campo FOR evalúa una expresión y asigna un valor resultante de TRUE, FALSE o UNKNOWN

SINTAXIS

FOR le permite escribir una expresión que itera por todas las instancias de un campo de repetición. Para cada instancia procesa una expresión booleana y coteja los resultados.

Por ejemplo:
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
Nota:
  1. En el predicado cuantificado, lo primero que se ha de tener en cuenta son los corchetes [] que hay al final de la referencia de campo después de FOR ALL. Los corchetes definen la iteración por todas las instancias del campo Item.

    En algunos casos, esta sintaxis parece ser innecesario porque puede obtener esta información a partir del contexto pero esto se lleva a cabo por motivos de coherencia con otros fragmentos de sintaxis.

  2. La cláusula AS asocia el nombre I de la referencia de campo con la instancia actual del campo de repetición. Esto es similar al concepto de clases de iterador que se utiliza en algunos lenguajes orientados a objeto como, por ejemplo, C++. La expresión entre paréntesis es un predicado que se evalúa para cada instancia del campo Item.

Si especifica la palabra clave ALL, la función itera por todas las instancias del Item de campo contenido en Body.Invoice.Purchases y evalúa el predicado I.Quantity <= 50. Si el predicado se evalúa en:
  • TRUE (si el campo está vacío o para todas las instancias de Item) se devuelve TRUE.
  • FALSE (para cualquier instancia de Item) se devuelve FALSE.
  • Cualquier otra cosa, se devuelve UNKNOWN.
Las palabras clave ANY y SOME son equivalentes. Si utiliza cualquiera de ellas, la función itera por todas las instancias del Item de campo contenido en Body.Invoice.Purchases y evalúa el predicado I.Quantity <= 50. Si el predicado se evalúa en:
  • FALSE (si el campo está vacío o para todas las instancias de Item) se devuelve FALSE.
  • TRUE (para cualquier instancia de Item) se devuelve TRUE.
  • Cualquier otra cosa, se devuelve UNKNOWN.
Para ilustrarlo mejor, los ejemplos siguientes están basados en el mensaje que se describe en Mensaje de ejemplo. En la expresión de filtro siguiente:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')
el subpredicado se evalúa en TRUE. No obstante, la expresión siguiente devuelve FALSE:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')
debido a que en esta factura no se incluye C Primer. Si en esta instancia algunos de los elementos de la factura no incluye un campo de título de libro, el subpredicado devuelve UNKNOWN y el predicado cuantificado devuelve el valor UNKNOWN.
Tenga muy en cuenta la posibilidad de que aparezcan valores nulos. Escriba este filtro con una comprobación explícita de la existencia del campo, como se indica a continuación:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND
I.Book.Title = 'C Primer')
El predicado IS NOT NULL garantiza que, si un campo Item no contiene un Book, el subpredicado devuelve el valor FALSE.
Conceptos relacionados
Visión general de ESQL
Tareas relacionadas
Desarrollo de ESQL
Acceder a varias apariciones desconocidas de un elemento
Referencia relacionada
Diagramas de sintaxis: tipos disponibles
Mensaje de ejemplo
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak18490_