我有一个带有 PostgreSQL 8.1.23 的服务器,它的功能在与postgres用户一起运行时完美运行,但与另一个用户一起显示 SQL 状态:
Run Code Online (Sandbox Code Playgroud)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;
Run Code Online (Sandbox Code Playgroud)
如果我像这样使用 postgres 用户运行它:
select fun_validatepost(1,230465);
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
-[ RECORD 1 ]-----------+--
fun_validatepost | 1
Run Code Online (Sandbox Code Playgroud)
但是,如果我与 someuser 执行相同的查询,则会显示以下消息:
Run Code Online (Sandbox Code Playgroud)ERROR: function fun_validatepost(integer, integer) does not …