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