我创建了名为test1的新数据库,新用户test1u user,并将数据库test1上的所有内容都授予了test1u user。此外,我还创建了schema test1_user。现在,我还创建了新的schema functions_包,它的所有者是test1_user。
我的代码:

CREATE OR REPLACE FUNCTION functions_package.newFunction(file_id
utl_file.file_type) RETURNS VOID AS $body$
 BEGIN
 functions_package.old_function1(file_id);
 functions_package.old_function2(file_id);
 functions_package.old_function3(file_id);

 End;
 --
 $body$
 LANGUAGE PLPGSQL
 SECURITY DEFINER
 STABLE;

我在schema functions_package下创建了几个函数,现在我试图创建一个新的函数,它使用旧的函数,但是我得到了eror:
ERROR:  syntax error at or near "functions_package"
LINE 3:    functions_package.old_function('aa');

我试图在我的新函数中调用的schema函数包中的每个函数都会出现这个错误。在所有的旧函数中,我根本没有调用任何函数,所以我没有这种错误。
有什么帮助吗?

最佳答案

函数名前缺少select
尝试:

CREATE OR REPLACE FUNCTION functions_package.newFunction(file_id
utl_file.file_type) RETURNS VOID AS $body$
 BEGIN
 perform functions_package.old_function1(file_id);
 perform functions_package.old_function2(file_id);
 perform functions_package.old_function3(file_id);

 End;
 --
 $body$
 LANGUAGE PLPGSQL
 SECURITY DEFINER
 STABLE;

关于postgresql - PostgreSQL模式冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44927607/

10-13 05:27