Daniel CAUNE wrote:
Hi,
How does the IF statement evaluate conditions? Does it evaluate conditions
following their declaration order from left to right? In case of
or-conditions, does the IF statement stop evaluating conditions whenever a
first or-condition is true?
The following snippet seems to be invalid, which let me think that PL/PGSQL
evaluates all the conditions:
IF (TG_OP = 'INSERT') OR
(OLD.bar = ...) THEN
statement
END IF;
Should be rewritten as (for example):
IF (TG_OP = 'INSERT') THEN
statement
ELSIF (OLD.bar = ...) THEN
statement
END IF;
Regards,
--
Daniel
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match
The following is working fine for me on 8.1.x on Windows. I am not sure
what order it is evaluating the if statement in but it is working correctly.
Oisin
CREATE OR REPLACE FUNCTION zfunc_testor(bool, bool)
RETURNS "varchar" AS
$BODY$DECLARE
v_1 boolean;
v_2 boolean;
BEGIN
v_1 :=$1;
v_2 := $2;
if (v_1 = TRUE) OR (v_2 = TRUE) then
return 'At least 1 true';
else
return 'neither true';
end if;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION zfunc_testor(bool, bool) OWNER TO postgres;
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org