Наша база данных PostgreSQL содержит функцию, написанную на PL / pgSQL. Я могу просто запустить его из окна SQL-запроса, например:
BEGIN TRANSACTION;
SELECT sg_copy_form(414, 2621, 1, 1035);
ROLLBACK TRANSACTION;
Однако, если я запускаю точно такой же SQL, что и pgScript выше (например, нажмите кнопку Выполнить pgScript в pgAdmin вместо Выполнить запрос ), тогда я получу следующую ошибку:
[QUERY ] BEGIN TRANSACTION
[WARNING ] SELECT sg_copy_form(414, 2621, 1, 1035)
ERROR: function sg_copy_form(integer, integer, integer, integer) does not exist
LINE 1: SELECT sg_copy_form(414, 2621, 1, 1035)
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
[QUERY ] ROLLBACK TRANSACTION
Почему это? Можно ли вызвать функцию PL / pgSQL из pgScript?
Если уместно: я пытаюсь сделать это на PostgreSQL 8.3.14 с помощью pgAdmin III 1.12.2.
РЕДАКТИРОВАТЬ: Я попытался полностью определить название функции, как предложено Eelke, например:
BEGIN TRANSACTION;
SELECT db_dev.public.sg_copy_form(414, 2621, 1, 1035);
ROLLBACK TRANSACTION;
Он по-прежнему работает правильно, когда выполняется как обычный запрос SQL, но теперь я получаю сообщение об ошибке Другой , когда я запускаю его как pgScript:
[QUERY ] BEGIN TRANSACTION
[WARNING ] SELECT db_dev.public.sg_copy_form(414, 2621, 1, 1035)
ERROR: cross-database references are not implemented: db_dev.public.sg_copy_form
[QUERY ] ROLLBACK TRANSACTION