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