From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Jorge Godoy <jgodoy(at)gmail(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Creating nested functions with plpgsql |
Date: | 2006-05-07 23:33:43 |
Message-ID: | 20060507233343.GC31301@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Jorge Godoy wrote:
> I have some real case examples where this could be useful, if it is needed.
> I haven't pasted them here because the smallest one has 176 LOC, after
> refactoring with nested functions.
>
> If it is not possible, are there any plans to allow this kind of thing?
> (Even with a different syntax it would be good to have it.)
We don't support nested functions at present, but you can create a
separate function and invoke it as you would call any external function.
This is arguably better, because you may then use inner_function in any
"outer function", not just the current one.
Something like:
CREATE FUNCTION inner_function(OUT output_day DATE) AS $_$
DECLARE
output_day DATE;
BEGIN
-- do something to calculate output_day
RETURN output_day;
END
$_$;
CREATE FUNCTION outer_function(param1 DATE) RETURNS date AS $$
DECLARE
output_day DATE;
BEGIN;
output_day = SELECT inner_function(params_to_create_date);
-- do something in main function that uses inner function several
-- times.
END;
$$ language plpgsql;
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Jorge Godoy | 2006-05-07 23:46:04 | Re: Creating nested functions with plpgsql |
Previous Message | PFC | 2006-05-07 22:58:15 | Re: Most efficient way to hard-sort records |