La sentencia CASE utiliza las normas definidas en cláusulas WHEN para seleccionar un bloque de sentencias que se ha de procesar.
La sentencia CASE tiene dos formatos: el formato simple y el buscado.
En el formato simple, la expresión principal se evalúa en primer lugar. Cada expresión de la cláusula WHEN se evalúa por orden hasta que el resultado es igual al resultado de la expresión principal. A continuación, se ejecuta las sentencias de la cláusula WHEN. Si no se encuentra una coincidencia y está presente la cláusula ELSE opcional, se ejecutan las sentencias de la cláusula ELSE. Los valores de comprobación no tienen que ser literales. El único requisito es que la expresión principal y las expresiones de la cláusula WHEN se evalúan en tipos que se pueden comparar.
En el formato buscado, se evalúa cada expresión de la cláusula WHEN por orden hasta que una se evalúa como TRUE. A continuación, se ejecuta las sentencias de la cláusula WHEN. Si ninguna de las expresiones se evalúa como TRUE y está presente la cláusula ELSE opcional, se ejecutan las sentencias de la cláusula ELSE. No tiene que haber ninguna similitud entre las expresiones de cada cláusula CASE. El único requisito es que todas se evalúen en un valor booleano.
El lenguaje ESQL tiene tanto una sentencia CASE como una función CASE (consulte Función CASE para obtener información detallada acerca de la función CASE). La sentencia CASE selecciona una entre un conjunto de sentencias para ejecutar. La función CASE selecciona una entre un conjunto de expresiones a evaluar y devuelve el valor de retorno de la expresión seleccionada como su valor.
CASE size WHEN minimum + 0 THEN SET description = 'small'; WHEN minimum + 1 THEN SET description = 'medium'; WHEN minimum + 2 THEN SET description = 'large'; CALL handleLargeObject(); ELSE SET description = 'unknown'; CALL handleError(); END CASE;Sentencia CASE buscada:
CASE WHEN i <> 0 THEN CALL handleI(i); WHEN j > 1 THEN CALL handleIZeroAndPositiveJ(j); ELSE CALL handleAllOtherCases(j); END CASE;