如何在PL / pgSQL中创建嵌套函数?

时间:2016-10-11 17:29:50

标签: postgresql scope plpgsql postgresql-9.5

我想在PL / pgSQL中创建一个函数,其中包含几个嵌套(或内部)函数。通过这种方式,我可以将问题分解成更小的部分,但不能在此功能之外访问我的小部件。

是否可以在PL / pgSQL中执行此操作?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:8)

试一试:

CREATE OR REPLACE FUNCTION outer() RETURNS void AS $outer$
DECLARE s text;
BEGIN
  CREATE OR REPLACE FUNCTION inner() RETURNS text AS $inner$
  BEGIN
    RETURN 'inner';
  END;
  $inner$ language plpgsql;

  SELECT inner() INTO s;
  RAISE NOTICE '%', s;

  DROP FUNCTION inner();
END;
$outer$ language plpgsql;

在postgres 9.5 SELECT outer();输出

 psql:/vagrant/f.sql:14: NOTICE:  inner
编辑:如果你不放弃内心 函数在外部函数的末尾,它将对数据库的其余部分保持可见。

答案 1 :(得分:3)

PLpgSQL不支持嵌套函数。仿效没有任何意义,也没有效果。