A instrução CASE utiliza regras definidas em cláusulas WHEN para selecionar um bloco de instruções para processar.
Há duas formas de instrução CASE: a forma simples e a forma pesquisada.
Na forma simples, a expressão principal é avaliada primeiro. Cada expressão da cláusula WHEN é avaliada sucessivamente até o resultado ser igual ao da expressão principal. As instruções dessa cláusula WHEN são executadas em seguida. Se nenhuma correspondência for encontrada e a cláusula ELSE opcional estiver presente, as instruções da cláusula ELSE são executadas em seu lugar. Os valores de teste não precisam ser literais. A única exigência é que a expressão principal e as expressões da cláusula WHEN avaliem tipos que podem ser comparados.
Na forma pesquisada, cada expressão da cláusula WHEN é avaliada sucessivamente até uma avaliar para TRUE. As instruções dessa cláusula WHEN são executadas em seguida. Se nenhuma das expressões avaliar para TRUE e a cláusula ELSE opcional estiver presente, as instruções da cláusula ELSE são executadas. Não precisa haver qualquer semelhança entre as expressões em cada cláusula CASE. A única exigência é que todas avaliem para um valor boolean.
A linguagem ESQL possui uma instrução CASE e uma função CASE (consulte Função CASE para obter detalhes da função CASE). A instrução CASE escolhe uma entre um conjunto de instruções para executar. A função CASE escolhe uma entre um um conjunto de instruções para avaliar e retorna como seu valor o valor de retorno da expressão escolhida.
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;Instrução CASE pesquisada:
CASE WHEN i <> 0 THEN CALL handleI(i); WHEN j > 1 THEN CALL handleIZeroAndPositiveJ(j); ELSE CALL handleAllOtherCases(j); END CASE;