【发布时间】:2015-05-30 23:23:15
【问题描述】:
我想在 Oracle 11g 中创建一个触发器,当 BATCHTYPE 列的值等于“STANDARD”时,当向 DLGPROD.INV_CHEMICAL 表中插入一行时会触发该触发器。
触发器将执行一个名为 SYS.STDEMAIL 的 PL/SQL 程序
当我尝试调用 STDEMAIL 程序时,我得到 PLS-00331 非法引用。
我对使用触发器或 PL/SQL 非常陌生,我不知道如何告诉触发器 #1 - 仅在更新行且 BATCHTYPE 列值为“标准”时触发,并且#2 - 如何正确调用属于 SYS 模式的名为 STDEMAIL 的 PL/SQL 程序。
任何帮助将不胜感激。
【问题讨论】:
-
你能告诉我们你写的代码吗?
-
还有
sys.stdemail过程的定义(我假设它是一个过程而不是一个函数)。可能与您的错误无关,但在SYS架构中创建对象是 Oracle 不赞成的,应该避免。 PL/SQL 在SYS模式中的行为方式与在其他地方的行为方式不同,这有时也会让粗心的开发人员陷入困境。到目前为止,创建一个可以拥有此类代码的适当强大的帐户是首选方法。