【问题标题】:Working with custom types in PostgreSQL and use them as arguments in functions在 PostgreSQL 中使用自定义类型并将它们用作函数中的参数
【发布时间】:2018-10-31 10:46:31
【问题描述】:

请帮助我,为什么我得到错误功能不存在?

[2018-10-31 12:31:05] [42883] 错误:函数 companytester(bigint, unknown, unknown, unknown, unknown) 不存在

提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

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)
);

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您正在向函数传递 5 个参数,但它被声明为只接受一个参数(founder 类型)

    您需要row constructor 来创建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'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多