我有一个使用 PostgreSQL 8.1.23 的服务器,它的功能在与用户一起运行时可以完美运行postgres
,但与另一个用户一起显示 SQL 状态:
SQL state: 42883
这是我的功能:
CREATE OR REPLACE FUNCTION fun_validatepost(integer, integer)
RETURNS integer AS
$BODY$
...
$BODY$
LANGUAGE plpgsql VOLATILE;
ALTER FUNCTION fun_validatepost(integer, integer)
OWNER TO postgres;
GRANT EXECUTE ON FUNCTION fun_validatepost(integer, integer) TO public;
GRANT EXECUTE ON FUNCTION fun_validatepost(integer, integer) TO postgres;
GRANT EXECUTE ON FUNCTION fun_validatepost(integer, integer) TO someuser;
如果我像这样使用 postgres 用户运行它:
select fun_validatepost(1,230465);
结果是这样的:
-[ RECORD 1 ]-----------+--
fun_validatepost | 1
但是,如果我执行与 someuser 相同的查询,则会向我显示以下消息:
ERROR: function fun_validatepost(integer, integer) does not exist SQL state: 42883 HINT: No function matches the given name and argument types. You may need to add explicit type casts
即使做一个明确的演员,我也会得到相同的结果:
select fun_validatepost from fun_validatepost(1::integer,230465::integer);
相同的错误信息。
我该怎么做someuser
才能执行相同的功能?
我的函数或演员表有问题吗?