Как я могу вызвать функцию PL/Perl из другой функции PL/Perl?

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам