Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 对postgres存储过程的类型强制调用不匹配_Postgresql_Stored Procedures - Fatal编程技术网

Postgresql 对postgres存储过程的类型强制调用不匹配

Postgresql 对postgres存储过程的类型强制调用不匹配,postgresql,stored-procedures,Postgresql,Stored Procedures,我通过pgAdmin创建了一个存储过程,以“postgres”(唯一的用户和管理员)的身份登录: 这是我的电话,直接在pgAdmin中拨打,以创建它的同一用户的身份登录: CALL spCreateMeet('TestMeet'::character varying,'blah'::character varying,'2021-06-01T00:00:00.000Z'::date) 这是正确的类型转换,我已经尝试过使用“public”进行资格验证,那么为什么我会得到: ERROR: pro

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

这是我的电话,直接在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.

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

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

试试这个:

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


我只是在学习Postgres,所以这对我来说是个新闻,它对大小写有多敏感,然而,我对这个项目太不了解了,无法将整个数据库重构为小写。在这一点上,我喜欢将所有定义的对象都放在引号中,因为如果我有相同名称的列名和变量,这有助于保持事情的直截了当。叫我疯子。直到我也不应该使用存储过程。来自SqlServer和Oracle的背景,我习惯于存储过程能够返回数据集。所以我做了大量的重构。谢谢你的帮助!
CALL "spCreateMeet"('TestMeet'::character varying,'blah'::character varying,'2021-06-01T00:00:00.000Z'::date)