PostgreSQL: выполнить сохраненную функцию (получение ошибки даже при приведении аргументов)
Я столкнулся с проблемой, решения которой не нашел.
Я успешно создал функцию. Вот имя функции и аргументы:
CREATE OR REPLACE FUNCTION app_private.create_user(username citext, email text, email_is_verified boolean, name text, avatar_url text, title text DEFAULT NULL::text, color character varying DEFAULT NULL::character varying, user_role smallint DEFAULT 0, password text DEFAULT NULL::text)
RETURNS app_public.users
....
CREATE FUNCTION
Я также успешно предоставил привилегию выполнять функцию роли. И также создал комментарий:
grant execute on function app_private.create_user(username citext, email text, email_is_verified bool, name text, avatar_url text, title text, color varchar(7), user_role smallint, password text) to nine_manager;
GRANT
comment on function app_private.create_user(username citext, email text, email_is_verified bool, name text, avatar_url text, title text, color varchar(7), user_role smallint, password text) is
E'Creates a user account.';
COMMENT
однако, когда я пытаюсь создать тестового пользователя, запрашивая:
SELECT "app_private.create_user"('JS0'::citext, 'test@gmail.com'::text, true::boolean, 'John Smith'::text, 'SY'::text, 'Manager'::text, '#000000'::varchar(7), 5::SMALLINT, 'test'::text);
Я получаю сообщение об ошибке:
ОШИБКА: функция app_private.create_user(citext, text, boolean, text, text, text, character change, smallint, text) не существует
LINE 1: SELECT "app_private.create_user"('SY0'::citext, 'test@gmail....
Я пытался изменить запросы и приведение типов, но не смог. Почти выдергиваю волосы.
Спасибо заранее.
1 ответ
Решение
Удалите двойные кавычки перед вызовом вашей функции в select, как показано ниже
Select app_private.create_user(....)
From table;