我在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);
在我看来,该功能存在且类型匹配,我正在努力找出问题所在。
答案 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);