Search Postgresql Archives

Re: "and then" / "or else"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux