【问题标题】:Error inside trigger. PLS-00201: identifier 'mySchema.Myfunction' must be declared. Oracle触发器内部错误。 PLS-00201:必须声明标识符“mySchema.Myfunction”。甲骨文
【发布时间】: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 是我的第二个模式中的函数。

标签: sql oracle


【解决方案1】:

作为 schema_b 连接

SQL> conn schema_b/password

然后授予必要的权限:

SQL> grant execute on myfunction to schema_a;

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

【讨论】:

  • 不幸的是没有帮助。另外我会与其他人分享这个触发器,所以我不确定它是否是解决这个问题的好方法。
  • 哪个用户拥有触发器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多