内部触发错误。 PLS-00201:必须声明标识符'mySchema.Myfunction'。甲骨文

时间:2017-05-25 10:33:34

标签: sql oracle

我在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);

它有效。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

以schema_b

连接
SQL> conn schema_b/password

然后授予必要的权限:

SQL> grant execute on myfunction to schema_a;

现在schema_a应该能够编译它的触发器。