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.
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.
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
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
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;