【发布时间】:2017-05-25 10:33:34
【问题描述】:
我在 oracle 上写了触发器。当我尝试在触发器中调用函数时出现错误:错误 PLS-00201:必须声明标识符“mySchema.Myfunction”。有人可以告诉我我应该如何申报吗?谢谢。
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);
而且它有效。感谢您的帮助!
【问题讨论】:
-
SCHEMA_B 是否已授予您在
myfunction上执行的权限? -
我不知道如何检查它。 myFuntion 是我的第二个模式中的函数。