2
CREATE FUNCTION foo() RETURNS text
    LANGUAGE plperl
    AS $$
        return 'foo';
$$;

CREATE FUNCTION foobar() RETURNS text
    LANGUAGE plperl
    AS $$
        return foo() . 'bar';
$$;

複数の関数を使用して結果を作成しようとしていますが、呼び出すfoobar()と空の結果が得られます。

4

1 に答える 1

4

ドキュメントから:

PL/Perl 関数は互いに直接呼び出すことはできません (Perl 内の無名サブルーチンであるため)。

解決策は、(spi_query を使用して) postgres 関数として関数を呼び出すか、ここに示すように、関数への参照をグローバルに使用可能なハッシュに入れることができる%_SHAREDようです。

于 2010-04-02T01:28:04.680 に答える