WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

ROW y LIST comparados

Puede comparar ROW y LIST con otros ROW y LIST.

Ejemplos

Ejemplo 1

IF ROW(InputBody.Data.*[1],InputBody.Data.*[2]) =
                 ROW('Raf' AS Name,'25' AS Age) THEN ...
IF LIST{InputBody.Data.Name, InputBody.Data.Age} = LIST{'Raf','25'} THEN ...
Con el siguiente texto de mensaje de entrada XML, las dos expresiones IF de las dos sentencias anteriores se evalúan como TRUE:
<Data>
   <Name>Raf</Name>
   <Age>25</Age>
</Data>
En la comparación entre ROW, se comparan tanto el nombre como el valor de cada elemento. En la comparación entre LIST solamente se compara el valor de cada elemento. En ambos casos, la cardinalidad y el orden secuencial de los operandos LIST o ROW que se están comparando deben tener el mismo orden para que los dos operandos sean iguales. Por lo tanto, los ejemplos siguientes son falsos porque el orden secuencial o la cardinalidad de los operandos que se comparan no coincide:
ROW('alpha' AS A, 'beta' AS B) =
             ROW('alpha' AS A, 'beta' AS B, 'delta' AS D)
ROW('alpha' AS A, 'beta' AS B) =
             ROW('beta' AS B,'alpha' AS A)
LIST{1,2,3} = LIST{1,2,3,4}
LIST{3,2,1} = LIST{1,2,3}

Ejemplo 2

Observe el ESQL siguiente:
IF InputBody.Places =
   ROW('Ken' AS first, 'Bob' AS second, 'Kate' AS third) THEN ...
Con el texto de mensaje de entrada XML siguiente, la expresión IF anterior se evalúa como TRUE:
<Places>
   <first>Ken</first>
   <second>Bob</second>
   <third>Kate</third>
</Places>

La presencia de ROW creado de forma explícita como uno de los operandos del operador de comparación da como resultado que el otro operando se trate como ROW.

Compárelo con una comparación como, por ejemplo:
IF InputBody.Lottery.FirstDraw = InputBody.Lottery.SecondDraw THEN ...
lo cual compara el valor de los campos FirstDraw y SecondDraw y no los nombres y los valores de cada uno de los campos hijo FirstDraw y SecondDraw creados como ROW. De este modo, un texto de mensaje de entrada XML como, por ejemplo:
<Lottery>
   <FirstDraw>wednesday
      <ball1>32</ball1>
      <ball2>12</ball2>
   </FirstDraw>
   <SecondDraw>saturday
      <ball1>32</ball1>
      <ball2>12</ball2>
   </SecondDraw>
</Lottery>
no hará que la expresión IF anterior se evalúe como TRUE, debido a que se están comparando los valores wednesday y saturday y no los nombres y valores de los campos ball.

Ejemplo 3

Observe el ESQL siguiente:
IF InputBody.Cities.City[] = LIST{'Athens','Sparta','Thebes'} THEN ...
Con el texto de mensaje de entrada XML siguiente, la expresión IF anterior se evalúa como TRUE:
<Cities>
	<City>Athens</City>
	<City>Sparta</City>
	<City>Thebes</City>
</Cities>
Se pueden comparar dos matrices de campos de mensaje de este modo, por ejemplo:
IF InputBody.Cities.Mediaeval.City[] = 
                    InputBody.Cities.Modern.City[] THEN ...

IF InputBody.Cities.Mediaeval.*[] = InputBody.Cities.Modern.*[] THEN ...

IF InputBody.Cities.Mediaeval.(XML.Element)[] = 
                    InputBody.Cities.Modern.(XML.Element)[] THEN ...
Con el texto de mensaje de entrada XML siguiente, la expresión IF anterior de la primera y tercera sentencia se evalúa como TRUE:
<Cities>
   <Mediaeval>1350
      <City>London</City>
      <City>Paris</City>
   </Mediaeval>
   <Modern>1990
      <City>London</City>
      <City>Paris</City>
   </Modern>
</Cities>
No obstante, la expresión IF de la segunda sentencia se evalúa como FALSE, debido a que *[] indica que todos los hijos de Mediaeval y Modern se deben comparar, y no simplemente los (XML.Element). En este caso, se comparan los valores 1350 y 1990, que forman hijos sin nombre de Mediaeval y Modern, así como también los valores de los códigos City.
La expresión IF de la tercera sentencia se evalúa como TRUE con un texto de mensaje de entrada XML como, por ejemplo:
<Cities>
   <Mediaeval>1350
      <Location>London</Location>
      <Location>Paris</Location>
   </Mediaeval>
   <Modern>1990
      <City>London</City>
      <City>Paris</City>
   </Modern>
</Cities>
LIST consta de valores sin nombre. Son los valores de los campos hijo de Mediaeval y Modern los que se comparan y no los nombres.
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:59:58


Tema de referenciaTema de referencia | Versión 8.0.0.5 | ak05660_