Pomóż mi proszę, dlaczego funkcja błędu nie istnieje?

[2018-10-31 12:31:05] [42883] BŁĄD: funkcja tester firmy(duży, nieznany, nieznany, nieznany, nieznany) nie istnieje

Wskazówka: żadna funkcja nie pasuje do podanej nazwy i typów argumentów. Może być konieczne dodanie wyraźnych rzutów typu.

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
Maks.Burkov 31 październik 2018, 13:46

1 odpowiedź

Najlepsza odpowiedź

Przekazujesz do funkcji 5 parametrów, ale zadeklarowano, że akceptuje tylko jeden parametr (typu founder)

Potrzebujesz konstruktora wierszy aby utworzyć właściwą instancję founder i tym samym przekazać tylko jeden argument:

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

Wyrażenie (76565445354,'Maks','Burkov','Maks.Burkov88@gmail.com','+_@Maks88')::founder to pojedyncza wartość

Alternatywnie możesz użyć:

SELECT companyTester(row(76565445354,'Maks','Burkov','Maks.Burkov88@gmail.com','+_@Maks88'));
1
a_horse_with_no_name 31 październik 2018, 14:06