ROWs e LISTs podem ser comparadas com outras ROWs e LISTs.
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 ...Com o corpo da mensagem de entrada XML a seguir, ambas as expressões IF nas duas instruções acima são avaliadas como TRUE:
<Data> <Name>Raf</Name> <Age>25</Age> </Data>Na comparação entre ROWs, o nome e o valor de cada elemento são comparados; na comparação entre LISTs apenas o valor de cada elemento é comparado. Nos dois casos, a cardinalidade e a ordem seqüencial dos operandos LIST ou ROW que estão sendo comparados devem ser iguais para que os dois operandos sejam iguais. Em outras palavras, todos os itens a seguir são false porque a ordem seqüencial ou a cardinalidade dos operandos que estão sendo comparados não é correspondente:
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}
IF InputBody.Places = ROW('Ken' AS first, 'Bob' AS second, 'Kate' AS third) THEN ...Com o corpo da mensagem de entrada XML a seguir, a expressão IF acima é avaliada como TRUE:
<Places> <first>Ken</first> <second>Bob</second> <third>Kate</third> </Places>
A presença de uma ROW explicitamente construída como um dos operandos no operador de comparação resulta em outro operando também sendo tratado como uma ROW.
IF InputBody.Lottery.FirstDraw = InputBody.Lottery.SecondDraw THEN ...que compara o valor dos campos FirstDraw e SecondDraw, não os nomes e valores de cada um dos campos filhos de FirstDraw e SecondDraw construídos como uma ROW. Assim, um corpo de mensagem de entrada XML, tal como:
<Lottery> <FirstDraw>wednesday <ball1>32</ball1> <ball2>12</ball2> </FirstDraw> <SecondDraw>saturday <ball1>32</ball1> <ball2>12</ball2> </SecondDraw> </Lottery>não resultaria na expressão IF acima sendo avaliada como TRUE, porque os valores wednesday e saturday estão sendo comparados, não os nomes e valores dos campos ball.
IF InputBody.Cities.City[] = LIST{'Athens','Sparta','Thebes'} THEN ...Com o corpo da mensagem de entrada XML a seguir, a expressão IF é avaliada como TRUE:
<Cities> <City>Athens</City> <City>Sparta</City> <City>Thebes</City> </Cities>
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 ...Com o corpo da mensagem de entrada XML a seguir, a expressão IF da primeira e terceira instruções acima são avaliadas como TRUE:
<Cities> <Mediaeval>1350 <City>London</City> <City>Paris</City> </Mediaeval> <Modern>1990 <City>London</City> <City>Paris</City> </Modern> </Cities>No entanto, a expressão IF da segunda instrução é avaliada como FALSE, porque o *[] indica que todos os filhos de Mediaeval e Modern devem ser comparados, não apenas (XML.Element)s. Neste caso, os valores 1350 e 1990, que formam filhos sem nome de Mediaeval e Modern, também são comparados como valores das marcações City.
<Cities> <Mediaeval>1350 <Location>London</Location> <Location>Paris</Location> </Mediaeval> <Modern>1990 <City>London</City> <City>Paris</City> </Modern> </Cities>LISTs são compostos de valores não denominados. São os valores dos campos filhos de Mediaeval e Modern que são comparados, não seus nomes.
Conceitos relacionados
ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Referências relacionadas
Funções Complexas ESQL
Função do Construtor ROW
Função do Construtor LIST
ROW e LIST Combinados
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
ak05660_ |