Re: "and then" / "or else"

Поиск
Список
Период
Сортировка
От Michael Glaesemann
Тема Re: "and then" / "or else"
Дата
Msg-id 76AE4E3A-17DD-4D9E-861D-88C70F1A1A04@seespotcode.net
обсуждение исходный текст
Ответ на "and then" / "or else"  (Christian Schröder <cs@deriva.de>)
Ответы Re: "and then" / "or else"
Список pgsql-general
On Nov 17, 2007, at 3:53 , Christian Schröder wrote:

> Unfortunately, the trick from the docs (chapter 4.2.12) using
> "case ... then" does not work inside an "if" statement (the "then"
> of the "case" is interpreted as belonging to the "if" and thus
> leads to a syntax error).

I think if you use parentheses you can avoid the syntax error:

CREATE FUNCTION test_case_in_if
(in in_a boolean, in in_b boolean, in in_c boolean)
RETURNS text
STABLE
STRICT
LANGUAGE plpgsql AS $body$
begin
   if (CASE WHEN in_a then (in_b and in_c) else in_b end)
   then
     return 'first branch';
   else
     return 'second branch';
   end if;
END
$body$;

test=# select test_case_in_if(true, true, true);
test_case_in_if
-----------------
first branch
(1 row)

test=# select test_case_in_if(true, false, true);
test_case_in_if
-----------------
second branch
(1 row)

test=# select test_case_in_if(false, true, false);
test_case_in_if
-----------------
first branch
(1 row)

Michael Glaesemann
grzm seespotcode net



В списке pgsql-general по дате отправления:

Предыдущее
От: Christian Schröder
Дата:
Сообщение: "and then" / "or else"
Следующее
От: Michael Glaesemann
Дата:
Сообщение: Re: Composite types for composite primary/foreign keys?