PSQL错误:函数不存在

时间:2018-08-22 15:42:58

标签: postgresql

我在postgres中做了一个函数

CREATE OR REPLACE FUNCTION foobar(
    x TEXT,
    y TEXT,
    z REAL
) RETURNS BOOLEAN AS $func$
.
.
.
$func$ LANGUAGE plpgsql;

当我执行\ df时,我得到以下信息:

+----------+--------+------------------+------------------------+---------+
|  Schema  |  Name  | Result data type |  Argument data types   |  Type   |
+----------+--------+------------------+------------------------+---------+
| mySchema | foobar | boolean          | x text, y text, z real | normal  |
+----------+--------+------------------+------------------------+---------+

但是当我尝试使用它时,出现[42883]错误:函数foobar(文本,文本,实数)不存在。提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。我正在打的电话是:

SELECT * FROM myTable WHERE foobar(column1::text, 'hello'::text, 7.2::real);

在我看来,该功能存在且类型匹配,我正在努力找出问题所在。

1 个答案:

答案 0 :(得分:0)

正如a_horse_with_no_name在他的评论中提到的那样,解决方案是在函数之前加上模式。

Wrong:   SELECT * FROM myTable WHERE foobar(column1::text, 'hello'::text, 7.2::real);
Correct: SELECT * FROM myTable WHERE mySchema.foobar(column1::text, 'hello'::text, 7.2::real);