Как я могу вызвать функцию PL / Perl из другой функции PL / Perl? - PullRequest
2 голосов
/ 02 апреля 2010
CREATE FUNCTION foo() RETURNS text
    LANGUAGE plperl
    AS $$
        return 'foo';
$$;

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

Я пытаюсь составить результаты, используя несколько функций, но когда я вызываю foobar(), я получаю пустой результат.

1 Ответ

4 голосов
/ 02 апреля 2010

Из документации :

Функции PL / Perl не могут вызывать друг друга напрямую (потому что они являются анонимными подпрограммами внутри Perl).

Решением является либо вызов функции как функции postgres (с использованием spi_query), либо вы можете поместить ссылки на свои функции в глобально доступный хеш %_SHARED, как показано здесь

...