Sentencia RETURN

La sentencia RETURN finaliza el proceso. Lo que sucede a continuación depende del contexto de programación en el que se emite la sentencia RETURN.

SINTAXIS

Cuando se utiliza en una función, la sentencia RETURN detiene el proceso de dicha función y devuelve el control a la expresión de llamada. Se evalúa expresión (que debe estar presente) y actúa como el valor de retorno de la función. Es un error que una función devuelva un valor ejecutando la lista de sentencias. El tipo de datos del valor devuelto debe ser el mismo que el contiene la declaración de la función.

Cuando se utiliza en un procedimiento, la sentencia RETURN detiene el proceso de dicha función y devuelve el control a la sentencia CALL de llamada. Una sentencia RETURN que se utilice en un procedimiento no debe tener una expresión.

Cuando se utiliza en el código de línea principal de un nodo Filter, Compute o Database, la sentencia Return detiene el proceso del ESQL del nodo y pasa el control al nodo siguiente. En estos casos, si está presente expresión, debe ser un valor BOOLEAN. Si no está presente expresión, un nodo Filter asume un valor de UNKNOWN y se propaga a su terminal desconocido. Los nodos Compute y Database propagan a los terminales de salida.

La tabla siguiente describe las diferencias entre la sentencia RETURN cuando se utiliza en los nodos Compute, Filter y Database.
  Valor de retorno Resultado
Nodo Compute:
RETURN TRUE Propagar el mensaje al terminal de salida.
  FALSE No propagar.
  UNKNOWN No propagar.
RETURN;   Propagar el mensaje al terminal de salida.
Nodo Filter:
RETURN TRUE Propagar el mensaje al terminal verdadero.
  FALSE Propagar el mensaje al terminal falso.
  UNKNOWN Propagar el mensaje al terminal desconocido.
RETURN;   Propagar el mensaje al terminal desconocido.
Nodo Database:
RETURN TRUE Propagar el mensaje al terminal de salida.
  FALSE No propagar.
  UNKNOWN No propagar.
RETURN;   Propagar el mensaje al terminal de salida.

Ejemplo

El ejemplo siguiente, que está basado en Mensaje de ejemplo, ilustra cómo se puede utilizar esta sentencia:
- Variables de Declare --
DECLARE a INT;
DECLARE PriceTotal FLOAT;
DECLARE NumItems INT;

-- Valores de inicialización --
SET a = 1;
SET NumItems = 0;
SET PriceTotal = 0.0;

-- Calcula el valor del orden, no obstante, si la compra es por lotes, --
-- el pedido se debe manejar de otro modo (descuento incluido), por lo tanto,  --
-- devolver TRUE o FALSE dependiendo del tamaño del 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;
Si el precio promedio de artículos es mayor que 42, se devuelve TRUE, de lo contrario, se devuelve FALSE. De este modo, un nodo Filter puede direccionar mensajes que describan artículos caros a una vía de acceso diferente a partir de mensajes que describan artículos baratos.

Consulte Sentencia PROPAGATE para obtener un ejemplo de RETURN FALSE e impedir que se propague implícitamente al final del proceso de un nodo Compute.

Conceptos relacionados
Visión general de ESQL
Tareas relacionadas
Desarrollo de ESQL
Referencia relacionada
Nodo Compute
Nodo Filter
Diagramas de sintaxis: tipos disponibles
Sentencias ESQL
Sentencia PROPAGATE
Mensaje de ejemplo
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05130_