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

vjhs03f7  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(171)

我想在PL/pgSQL中创建一个函数,其中包含几个嵌套(或内部)函数。这样我就可以把问题分解成更小的部分,但不能在这个函数之外访问我的更小的部分。
在PL/pgSQL中可以这样做吗?如果是,如何做到的?

dgiusagp

dgiusagp1#

试试看:

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


编辑:如果你不删除外部函数末尾的内部函数,它将对数据库的其余部分保持可见。

yhuiod9q

yhuiod9q2#

PLpgSQL不支持嵌套函数。模拟没有任何意义,并且是非生产性的(可能会对性能产生负面影响)。

相关问题