El CASE
expresión se evalúa como un valor, es decir, se utiliza para evaluar uno de un conjunto de resultados, en función de alguna condición.
Ejemplo:
SELECT CASE
WHEN type = 1 THEN 'foo'
WHEN type = 2 THEN 'bar'
ELSE 'baz'
END AS name_for_numeric_type
FROM sometable`
El CASE
instrucción ejecuta una de un conjunto de instrucciones, en función de alguna condición.
Ejemplo:
CASE
WHEN action = 'update' THEN
UPDATE sometable SET column = value WHERE condition;
WHEN action = 'create' THEN
INSERT INTO sometable (column) VALUES (value);
END CASE
Ves cómo son similares, pero la declaración no evalúa a un valor y se puede usar por sí solo, mientras que la expresión debe ser parte de una expresión, p. una consulta o una tarea. No puede usar la declaración en una consulta, ya que una consulta no puede contener declaraciones, solo expresiones que deben evaluarse como algo (la consulta en sí misma es una declaración, en cierto modo), p. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE
no tiene sentido.