Как я могу вызвать функцию 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
как показано здесь