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.
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.
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. |
- 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.