Función CASE

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

SINTAXIS

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 una cláusula WHEN. La expresión 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.

El formato searched-when es similar pero tiene la flexibilidad adicional de permitir probar 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, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:55:34

ak05600_