Это относится к структуре условного управления CASE
процедурного языка PL / pgSQL , предназначенной для использования в функциях plpgsql или DO
заявления .Не следует путать с CASE
выражением SQL .Другой язык!И немного разные синтаксические правила тоже.
Несмотря на то, что SQL CASE
может быть встроен в выражения SQL внутри кода PL / pgSQL (который в основном является просто клеем для команд SQL), вы не можете иметь автономные выражения SQL CASE
(было бы бессмысленно).
-- inside plpgsql code block:
CASE
WHEN old.applies_to = 'admin' THEN
_applies_to := 'My Self';
ELSE
_applies_to := initcap(old.applies_to);
END CASE;
Вы должны использовать полностью определенные операторы, заканчивающиеся точкой с запятой (;
) и END CASE
, чтобы закрыть его.
Согласно документации ключевое слово ELSE
оператора CASE
является , а не необязательным.Я цитирую по ссылке выше:
Если совпадений не найдено, операторы ELSE
выполняются;но если ELSE
отсутствует, то возникает исключение CASE_NOT_FOUND
.
Однако вы можете использовать пустое ELSE
:
CASE
WHEN old.applies_to = 'admin' THEN
_applies_to := 'My Self';
ELSE
-- do nothing
END CASE;
Это другоеиз выражений SQL CASE
, где ELSE
является необязательным, но если ключевое слово присутствует, выражение также должно быть задано!