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