Sentencia CASE

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.

SINTAXIS

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.

Ejemplos

Sentencia CASE sentencia:
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;
Conceptos relacionados
Visión general de ESQL
Tareas relacionadas
Desarrollo de ESQL
Referencia relacionada
Diagramas de sintaxis: tipos disponibles
Sentencias ESQL
Función CASE
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak04930_