Re: Creating nested functions with plpgsql

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.

In response to

Responses

Browse pgsql-sql by date

  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