Обсуждение: Nested funtion

Поиск
Список
Период
Сортировка

Nested funtion

От
Sridhar N Bamandlapally
Дата:
Hi

Is there any way to create nested function?

oracle to postgres migration required super function variable reference into nested function without nested function parameter

Oracle sample:
-------------------------------
create or replace function f1(n number) return number
is
    vs number:=1;
    function nf1(m number) return number is
    begin
        return vs + m + n;
    end;
begin
    return nf1(2);
end;
/

run:
--------
SQL> select f1(9) from dual;

     F1(9)
----------
        12



Thanks
Sridhar BN

Re: Nested funtion

От
Pavel Stehule
Дата:
Hi

2016-03-28 6:14 GMT+02:00 Sridhar N Bamandlapally <sridhar.bn1@gmail.com>:
Hi

Is there any way to create nested function?

Some languages supports this feature, like plv8, but plpgsql doesn't support it,

You have to use two function and some implementation of session variables.

Regards

Pavel 

oracle to postgres migration required super function variable reference into nested function without nested function parameter

Oracle sample:
-------------------------------
create or replace function f1(n number) return number
is
    vs number:=1;
    function nf1(m number) return number is
    begin
        return vs + m + n;
    end;
begin
    return nf1(2);
end;
/

run:
--------
SQL> select f1(9) from dual;

     F1(9)
----------
        12



Thanks
Sridhar BN

Re: Nested funtion

От
"David G. Johnston"
Дата:
On Sun, Mar 27, 2016 at 9:14 PM, Sridhar N Bamandlapally <sridhar.bn1@gmail.com> wrote:
Hi

Is there any way to create nested function?

oracle to postgres migration required super function variable reference into nested function without nested function parameter

Oracle sample:
-------------------------------
create or replace function f1(n number) return number
is
    vs number:=1;
    function nf1(m number) return number is
    begin
        return vs + m + n;
    end;
begin
    return nf1(2);
end;
/

run:
--------
SQL> select f1(9) from dual;

     F1(9)
----------
        12


PostgreSQL's ​pl/pgsql langauge doesn't grok closures.  You are welcome to write "f1" in a language that does.  Perl and Python are built-in and many others are available.  I assume at least one of them can do this.

​David J.