A instrução RETURN encerra o processamento. O que acontece em seguida depende do contexto de programação no qual a instrução RETURN é emitida.
Quando utilizada em uma função, a instrução RETURN pára o processamento dessa função e o controle é retornado à expressão de chamada. A expression (que deve estar presente) é avaliada e age como o valor de retorno da função. É um erro para uma função retornar executando a lista de instruções. O tipo de dados do valor retornado deve ser o mesmo da instrução da função.
Quando utilizada em um procedimento, a instrução RETURN pára o processamento do procedimento e o controle é retornado à instrução CALL de chamada. Uma instrução RETURN utilizada em um procedimento não deve possuir uma expression.
Quando utilizado em um código de linha principal do nó Filter, Compute ou Database, a instrução RETURN pára o processamento de ESQL do nó e o controle é transmitido para o próximo nó. Nesses casos, se a expression estiver presente, ela deverá ser avaliada como um valor BOOLEAN. Se expression não estiver presente, um nó Filter assumirá um valor de UNKNOWN e será propagado para seu terminal desconhecido; os nós Compute e Database são propagados para seus terminais de saída.
Valor de Retorno | Resultado | |
Nó Compute: | ||
RETURN | TRUE | Propagar mensagem para terminal out. |
FALSE | Não propaga. | |
UNKNOWN | Não propaga. | |
RETURN; | Propagar mensagem para terminal out. | |
Nó Filter: | ||
RETURN | TRUE | Propagar mensagem para terminal true. |
FALSE | Propagar mensagem para terminal false. | |
UNKNOWN | Propagar mensagem para terminal unknown. | |
RETURN; | Propagar mensagem para terminal unknown. | |
Nó Database: | ||
RETURN | TRUE | Propagar mensagem para terminal out. |
FALSE | Não propaga. | |
UNKNOWN | Não propaga. | |
RETURN; | Propagar mensagem para terminal out. |
-- Declarar variáveis -- DECLARE a INT; DECLARE PriceTotal FLOAT; DECLARE NumItems INT; -- Inicializar valores -- SET a = 1; SET NumItems = 0; SET PriceTotal = 0.0; -- Calcule o valor do pedido, entretanto se esta for uma compra em massa, o -- -- pedido precisará ser tratado de forma diferente (oferecido desconto), para que seja retornado TRUE -- -- ou FALSE dependendo do tamanho do pedido -- WHILE a <= CARDINALITY(Invoice.Purchases.Item[a] DO SET NumItems = NumItems + Invoice.Purchases.Item[a].Quantity; SET PriceTotal = PriceTotal + Invoice.Purchases.Item[a].UnitPrice; SET a = a + 1; END; RETURN PriceTotal/NumItems > 42;Se o preço médio de itens for maior que 42, será retornado TRUE; de outra maneira, será retornado FALSE. Assim, um nó Filter pode rotear mensagens que descrevem itens dispendiosos em um caminho diferente para mensagens que descrevem itens baratos.
Consulte Instrução PROPAGATE para obter um exemplo de RETURN FALSE para evitar propagação implícita no final do processamento em um nó Compute.