【发布时间】:2017-07-29 20:52:04
【问题描述】:
我尝试创建一个Oracle触发器,在插入或更新表后,触摸Linux主机中的一个文件。
所以我创建了一个这样的 shell 脚本:
#!/bin/bash
touch /export/home/oracle/shell/a.txt
并修改权限:
chmod +x test1.sh
然后我使用 sys 登录 oracle 并创建一个调度程序作业,如下所示:
SQL> exec DBMS_SCHEDULER.CREATE_JOB(job_name=>'test1',job_type=>'EXECUTABLE',job_action=>'/export/home/oracle/shell/test1.sh');
PL/SQL procedure successfully completed.
现在我想创建一个 Oracle 触发器并像这样调用这个调度程序作业:
CREATE OR REPLACE TRIGGER MY_OAM_LOG
AFTER INSERT OR UPDATE ON OCS_CHARGE_OFF_AUTOMATION
FOR EACH ROW
BEGIN
exec DBMS_SCHEDULER.RUN_JOB(job_name=>'test1');
END;
/
但错误:
SQL> CREATE OR REPLACE TRIGGER MY_OAM_LOG
2 AFTER INSERT OR UPDATE ON OCS_CHARGE_OFF_AUTOMATION
3 FOR EACH ROW
4 BEGIN
5 exec DBMS_SCHEDULER.RUN_JOB(job_name=>'test1');
6 END;
7 /
Warning: Trigger created with compilation errors.
SQL> show error
Errors for TRIGGER MY_OAM_LOG:
LINE/COL
--------------------------------------------------------------------------------
ERROR
--------------------------------------------------------------------------------
2/7
PLS-00103: Encountered the symbol "DBMS_SCHEDULER" when expecting one of the fol
lowing:
:= . ( @ % ;
The symbol ":=" was substituted for "DBMS_SCHEDULER" to continue.
我已经搜索了很多解决方案,但没有一个是有效的。我该如何处理它?请。
【问题讨论】: