对 postgres 存储过程的类型转换调用不匹配

type casted call to postgres stored procedure not matching

我通过 pgAdmin 创建了一个存储过程,以 'postgres'(唯一的用户和管理员)身份登录:

CREATE OR REPLACE PROCEDURE public."spCreateMeet"(
    "_MeetName" character varying,
    "_MeetBannerDescription" character varying,
    "_MeetDate" date)
LANGUAGE 'sql'
AS $BODY$
INSERT INTO public."tblMeet"
("MeetName", "MeetBannerDescription", "MeetDate")
VALUES ("_MeetName", "_MeetBannerDescription", "_MeetDate")
RETURNING "MeetId";
$BODY$;

这是我的调用,直接在 pgAdmin 中进行,以创建它的同一用户身份登录:

CALL spCreateMeet('TestMeet'::character varying,'blah'::character varying,'2021-06-01T00:00:00.000Z'::date)

它是正确的类型转换,我已经尝试使用 'public.' 进行排位赛,所以为什么我得到:

ERROR:  procedure spcreatemeet(character varying, character varying, date) does not exist

LINE 1: CALL spCreateMeet('TestMeet'::character varying,'blah...
             ^

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

首先不要在列、table、函数等名称中使用大写或驼峰命名,因为它是区分大小写的。如果你这样做,那么每次都会产生问题。

您可以在小写显示过程名称的地方看到错误。如果您不使用双引号将名称括起来,那么它只会将其视为小写,因此解决方案是使用双引号将名称括起来。

试试这个:

CALL "spCreateMeet"('TestMeet'::character varying,'blah'::character varying,'2021-06-01T00:00:00.000Z'::date)