PostgreSQL: выполнить хранимую функцию (получить ошибку, даже если аргументы были приведены) - PullRequest
0 голосов
/ 28 января 2020

Я столкнулся с проблемой, не могу найти решение.

Я успешно создал функцию. Вот имя функции и аргументы:

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 (цитата, текст, логическое значение, текст, текст, текст, изменение символа, строчная буква, текст) не существует ЛИНИЯ 1: ВЫБЕРИТЕ "app_private.create_user" ('SY0' :: citext, 'test@gmail....

Я пытался изменить запросы и приведение, но не смог. Почти выдернул мои волосы.

Спасибо заранее.

1 Ответ

1 голос
/ 28 января 2020

Удалите двойные qoutes перед вызовом вашей функции в select, как показано ниже

     Select app_private.create_user(....)
      From table;
...