Функция PostgreSQL не существует
Я использую запрос SQL, который использует пользовательскую функцию, похожую на эту
CREATE OR REPLACE FUNCTION per_cont(myarray integer[], percentile real)
Это прекрасно работает в инструменте pgAdmin, но когда я использую этот запрос в моем Java-приложении, он выдает мне ошибку:
function per_cont(integer[], real) does not exist
Я использую библиотеку JDBI для взаимодействия с базой данных. Почему он не находит функцию при запуске из Java-приложения? Как я могу это исправить?
1 ответ
Сообщение об ошибке не имеет смысла для CREATE OR REPLACE FUNCTION
Команда, которую вы показываете. Предполагая, что вы на самом деле вызываете функцию в выражении DML, как
SELECT per_cont('{1,2,3}', 1);
Очевидно, вы должны использовать ту же базу данных, но вы говорите, что она была создана.
Ваш search_path
также должен соответствовать. Поскольку вы не предоставляете схему явно, функция создается в "текущей" схеме при ее создании. Та же схема должна отображаться в search_path
другого сеанса или функция не видна.
Подробные инструкции в связанном ответе: