Это из официальной документации (http://www.postgresql.org/docs/9.4/static/plpgsql-control-structures.html)PostgreSQL сазе
и две формы корпуса:
CASE ... WHEN ... THEN ... ELSE ... END CASE
CASE WHEN ... THEN ... ELSE ... END CASE
Это не работает:
select case when 1 < 2 then 'a' else 'b' end case from pg_database limit 1;
Он работает с end
вместо end case
, хотя:
select case when 1 < 2 then 'a' else 'b' end from pg_database limit 1;
Это с PostgreSQL 9.4.6.
Почему синтаксис официальных документов не соответствует синтаксису, который, по-видимому, требует сервер?
Современный SQL позволяет также использовать список выражений в SQL 'CASE'. Процедурный 'CASE' основан на современном стандарте, SQL' CASE' по-прежнему совместим с ANSI SQL 99 (отсутствует дополнительная функция F263). Причина, по которой SQL 'CASE' пропускает эту функцию, прост - ни один орган не написал ее для Postgres. –
@PavelStehule: О, интересно, это может быть невысокое зависание для амбициозного разработчика. –