Работа с пользовательскими типами в PostgreSQL и использование их в качестве аргументов в функциях - PullRequest
0 голосов
/ 31 октября 2018

Помогите мне пожалуйста, почему я получил функцию ошибки не существует?

[2018-10-31 12:31:05] [42883] ОШИБКА: функция companytester (bigint, неизвестно, неизвестно, неизвестно, неизвестно) не существует

Подсказка: ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам потребуется добавить явные приведения типов.

CREATE OR REPLACE FUNCTION companyTester(founder Founder) RETURNS BOOLEAN AS $$

BEGIN

    RAISE NOTICE 'Founder id: %',founder.founder_id;
    RAISE NOTICE 'Founder FirstName: %',founder.firstname;
    RAISE NOTICE 'Founder LastName: %',founder.lastname;
    RAISE NOTICE 'Founder email: %',founder.email;
    RAISE NOTICE 'Founder password %',founder.f_password;

END;

$$ LANGUAGE plpgsql;



 SELECT companyTester(76565445354,'Maks','Burkov','Maks.Burkov88@gmail.com','+_@Maks88;

CREATE TYPE Founder AS (
  founder_id BIGINT,
  firstname VARCHAR(150),
  lastname VARCHAR(150),
  email VARCHAR(50),
  f_password VARCHAR(50)
);

1 Ответ

0 голосов
/ 31 октября 2018

Вы передаете 5 параметров в функцию, но объявлено, что она принимает только один параметр (типа founder)

Вам необходим конструктор строки , чтобы создать правильный экземпляр founder и, таким образом, передать только один аргумент:

SELECT companyTester(
             (76565445354,'Maks','Burkov','Maks.Burkov88@gmail.com','+_@Maks88')::founder
       );

Выражение (76565445354,'Maks','Burkov','Maks.Burkov88@gmail.com','+_@Maks88')::founder представляет собой одно значение

В качестве альтернативы вы можете использовать:

SELECT companyTester(row(76565445354,'Maks','Burkov','Maks.Burkov88@gmail.com','+_@Maks88'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...