create or replace function fcn_max_dt(p_dt timestamp without time zone, p_dt2 timestamp without time zone) returns timestamp without time zone as $$ BEGIN v_dt := p_dt; v_dt2 := p_dt2;
if v_dt >= v_dt2 then return v_dt; else return v_dt2; end if; END; $$ LANGUAGE 'plpgsql';
ERROR: syntax error at or near "v_dt" at character 1 QUERY: v_dt := $1 CONTEXT: SQL statement in PL/PgSQL function "fcn_max_dt" near line 3
********** Error **********
ERROR: syntax error at or near "v_dt" SQL state: 42601 Context: SQL statement in PL/PgSQL function "fcn_max_dt" near line 3
On Tue, Sep 9, 2008 at 11:55 AM, Ruben Gouveia <rubes7202@gmail.com> wrote: > Does this syntax look correct? Can anyone think of a better way to write > this? > > This function will accept two timestamp parameters and determine the highest > of the two? > > create or replace function fcn_max_dt(p_dt timestamp without time zone, > p_dt2 timestamp without time zone) > returns timestamp without time zone as $$ > DECLARE > v_dt timestamp without time zone; > v_dt2 timestamp without time zone; > > BEGIN > v_dt := p_dt; > v_dt2 := p_dt2; > > if v_dt >= v_dt2 then > return v_dt; > else > return v_dt2; > end if; > > END; > $$ LANGUAGE 'plpgsql';
It certainly works, but there's no real need for the declarations. This works just as well:
create or replace function fcn_max_dt(p_dt timestamp without time zone, p_dt2 timestamp without time zone) returns timestamp without time zone as $$
BEGIN
if p_dt >= p_dt2 then return p_dt; else return p_dt2; end if;