Работа с пользовательскими типами в postgresql и их использование в качестве аргументов в функциях

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

[2018-10-31 12:31:05] [42883] ERROR: function companytester(bigint, unknown, unknown, unknown, unknown) does not exist

Hint: No function matches the given name and argument types. You might need to add explicit type casts.

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)
);
0
0
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы передаете функции 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'));

Другие вопросы по теме