我在oracle上写了触发器。当我尝试在触发器内调用函数时出错:错误PLS-00201:必须声明标识符'mySchema.Myfunction'。 somoeone可以告诉我应该如何申报吗?感谢。
create or replace
trigger myTrigger
BEFORE INSERT OR UPDATE OF name_of_A ON schema_A.myTable
FOR EACH ROW
DECLARE
A varchar2(10);
BEGIN
A := :new.name_of_A;
IF A IS NOT NULL THEN
:new.name_of_A := schema_B.Myfunction( A);
END IF;
END;
解决方案:
在schema_a上添加了脚本:
grant execute on myfunction to schema_a;
也改变了
:new.name_of_A := schema_B.Myfunction( A);
分为:
:new.name_of_A := MYFUNCTION( A);
它有效。谢谢你的帮助!
答案 0 :(得分:1)
以schema_b
连接SQL> conn schema_b/password
然后授予必要的权限:
SQL> grant execute on myfunction to schema_a;
现在schema_a应该能够编译它的触发器。