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
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend