La sentencia RETURN detiene el proceso. Lo que suceda a continuación dependerá de dónde utilice la sentencia RETURN.
Cuando se utiliza en una función, la sentencia RETURN detiene el proceso de esa función y devuelve el control a la expresión que llama. La expresión (que debe estar presente) se evalúa y actúa como valor de retorno de la función. Es un error que una función se devuelva al agotar la lista de sentencias. El tipo de datos del valor devuelto debe ser el mismo que en la declaración de la función.
Cuando se utiliza en un procedimiento, la sentencia RETURN detiene el proceso de ese procedimiento y devuelve el control a la sentencia CALL que llama. Una sentencia RETURN utilizada en un procedimiento no debe tener una expresión.
Cuando se utiliza en el código 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 expresión está presente, debe evaluarse como un valor BOOLEAN. Si expresión no está presente, un nodo Filter supone el valor UNKNOWN y se propaga a su terminal desconocido; los nodos Compute y Database se propagan a sus terminales de salida.
Valor de devolución | Resultado | |
Nodo Compute: | ||
RETURN | TRUE | Propagar mensaje al terminal de salida. |
FALSE | No propagar. | |
UNKNOWN | No propagar. | |
RETURN; | Propagar mensaje al terminal de salida. | |
Nodo Filter: | ||
RETURN | TRUE | Propagar mensaje al terminal verdadero. |
FALSE | Propagar mensaje al terminal falso. | |
UNKNOWN | Propagar mensaje al terminal desconocido. | |
RETURN; | Propagar mensaje al terminal desconocido. | |
Nodo Database: | ||
RETURN | TRUE | Propagar mensaje al terminal de salida. |
FALSE | No propagar. | |
UNKNOWN | No propagar. | |
RETURN; | Propagar mensaje al terminal de salida. |
Cuando se utiliza en nodos Filter, esta sentencia permite que se tome la decisión de filtro utilizando la plena potencia de sentencias ESQL, en lugar de usar sólo una expresión.
-- Declare variables -- DECLARE a INT; DECLARE PriceTotal FLOAT; DECLARE NumItems INT; -- Initialize values -- SET a = 1; SET NumItems = 0; SET PriceTotal = 0.0; -- Calculate value of order, however if this is a bulk purchase, the -- -- order will need to be handled differently (discount given) so return TRUE -- -- or FALSE depending on the size of the order -- 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 medio de los artículos es mayor que 42, se devuelve TRUE; en caso contrario, se devuelve FALSE. Así pues, un nodo Filter podría direccionar mensajes que describan artículos caros por una vía de acceso diferente de los mensajes que describan artículos baratos.
Consulte el apartado Sentencia PROPAGATE para ver un ejemplo de RETURN FALSE para evitar la propagación implícita al final del proceso en un nodo Compute.
Conceptos relacionados
ESQL
Tareas relacionadas
Desarrollo de ESQL
Referencia relacionada
Nodo Compute
Nodo Filter
Preferencia de sintaxis
Sentencias ESQL
Sentencia PROPAGATE
Mensaje de ejemplo
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ak05130_ |