Función CASE

La función CASE es una función compleja que tiene dos formatos, el formato simple-when y el formato searched-when. En cualquiera de los formatos CASE devuelve un valor cuyo resultado controla vía de acceso de los procesos posteriores.

SINTAXIS

Ambos formatos de CASE devuelven un valor dependiendo de un conjunto de normas definidas en cláusulas WHEN.

En el formato simple-when, valor_origen se compara con cada valor_prueba hasta que se encuentra una coincidencia. El resultado de la función CASE es el valor del valor_resultados correspondiente. Por lo tanto, el tipo de datos de valor_origen debe ser comparable al tipo de datos de cada valor_pruebas.

La función CASE debe tener como mínimo un WHEN. ELSE es opcional. La expresión ELSE es NULL. Una expresión CASE está delimitada por END. Los valores de comprobación no tiene que ser valores literales.

La versión de la cláusula searched-when es similar pero tiene la flexibilidad adicional de que permite comprobar un número de valores diferentes.

El ejemplo siguiente muestra una función CASE con una cláusula WHEN sencilla. En este ejemplo, CASE se puede determinar solamente mediante una variable que se especifica junto a la palabra clave CASE.
 DECLARE CurrentMonth CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);

  SET MonthText = 
   CASE CurrentMonth
      WHEN '01' THEN 'Enero' 
      WHEN '02' THEN 'Febrero'
      WHEN '03' THEN 'Marzo' 
      WHEN '04' THEN 'Abril' 
      WHEN '05' THEN 'Mayo' 
      WHEN '06' THEN 'Junio' 
      ELSE 'Segundo semestre del año' 
   END
El ejemplo siguiente muestra una función CASE con una cláusula searched-when-clause. Este ejemplo se continúa determinando mediante una variable CurrentMonth:
 DECLARE CurrentMonth CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);

  SET MonthText = 
   CASE  
      WHEN Month = '01' THEN 'Enero' 
      WHEN Month = '02' THEN 'Febrero'
      WHEN Month = '03' THEN 'Marzo' 
      WHEN Month = '04' THEN 'Abril' 
      WHEN Month = '05' THEN 'Mayo' 
      WHEN Month = '06' THEN 'Junio' 
      ELSE 'Segundo semestre del año' 
   END
En searched-when-clause, se pueden utilizar variables diferentes en las cláusulas WHEN para determinar el resultado. Esto se demuestra en el ejemplo siguiente de searched-when-clause:
 DECLARE CurrentMonth CHAR;
  DECLARE CurrentYear CHAR;
  DECLARE MonthText CHAR;
  SET CurrentMonth = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 6 FOR 2);
  SET CurrentYear = SUBSTRING(InputBody.Invoice.InvoiceDate FROM 1 FOR 4);

  SET MonthText = 
    CASE 
      WHEN CurrentMonth = '01' THEN 'Enero'
      WHEN CurrentMonth = '02' THEN 'Febrero'
      WHEN CurrentMonth = '03' THEN 'Marzo'
      WHEN CurrentYear = '2000' THEN 'Un mes del año 2000'
      WHEN CurrentYear = '2001' THEN 'Un mes del año 2001'
      ELSE 'Ni los primeros tres de ningún año ni un mes del año 2000 o 2001'
    END;
Conceptos relacionados
Visión general de ESQL
Tareas relacionadas
Desarrollo de ESQL
Referencia relacionada
Diagramas de sintaxis: tipos disponibles
Funciones ESQL complejas
Sentencia MOVE
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05600_