Postgresql 如何解决Postgres中的错误42883?

Postgresql 如何解决Postgres中的错误42883?,postgresql,types,casting,plpgsql,Postgresql,Types,Casting,Plpgsql,运行此脚本时: CREATE OR REPLACE FUNCTION registeruser(character varying, character varying, money, character varying, character varying, date) RETURNS void AS $BODY$ BEGIN INSERT INTO "Users"("Name", "Surnames", "Money", "Email", "Password", "UserType",

运行此脚本时:

CREATE OR REPLACE FUNCTION registeruser(character varying, character varying, money, character varying, character varying, date)
  RETURNS void AS
$BODY$
BEGIN
INSERT INTO "Users"("Name", "Surnames", "Money", "Email", "Password", "UserType", "State", "BirthDate")
VALUES ($1,$2,$3,$4,$5,'Costumer','Active',$6);

END;
$BODY$  LANGUAGE plpgsql VOLATILE;

SELECT RegisterUser('Andrea','Gianchero',0,'gian@hotmail.com','rome','1960-04-12');
我得到这个错误:

ERROR:  function registeruser(unknown, unknown, integer, unknown, unknown, unknown) does not exist
LINE 1: SELECT RegisterUser('Andrea','Gianchero',0,'gian@hotmail.com...
             ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

如何解决此问题?

字符串文本(如
'Andrea'
是非类型化的,并且
varchar
类型的参数不同。在psql控制台中测试以下两行:

select 'Andrea';
select 'Andrea'::character varying;
第一个将输出带有默认列名的Andrea?column? 第二个将输出
Andrea
,但列名为
varchar
。从文件中:

符号varchar(n)和char(n)分别是字符变量(n)和字符(n)的别名

要解决您的问题,只需将函数调用中的所有字符串文本强制转换为type
varchar
(或
character variating
)。此外,
0
应转换为类型
money
,此时它被识别为
整数

SELECT RegisterUser('Andrea'::varchar, 'Gianchero'::varchar, 0::money,...)

您的InitCaps/CamelCase看起来可疑。Postgres不会自动将整数转换为
货币。您需要自己进行强制转换。我已经进行了转换,但无法解决问题错误:函数registeruser(未知、未知、金钱、未知、未知、未知、未知、未知)不存在第1行:选择registeruser('Alfonso','Gianchero',0::money,'gian@gma...^提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。@弗朗西斯科:您是否也像尼克·巴恩斯在评论中写的那样将整数值转换为
money
?@Francisco:您评论中的错误消息指示8个参数,而ur函数有6个。删除尾随参数,它应该可以工作。这是一个问题。
?column?
不是数据类型,而是默认的列名。除非函数重载,否则只有
money
需要强制转换,因为没有定义隐式强制转换。最好直接强制转换字符串文字:
money“0”