Oracle dbms_scheduler.create_job错误

时间:2014-03-27 02:26:24

标签: sql oracle ora-06550 dbms-scheduler pls-00103

我正在尝试在oracle 10g数据库中创建一个简单的预定事件。我一直在尝试使用dbms_scheduler.create_job。这是我写的脚本:

  

开始dbms_scheduler.create_job(

     

job_name => 'disengagementChecker',

     

job_type => 'PLSQL_BLOCK',

     

job_action => '插入   PatientClassRelObs(patientClassID,observationTypeID)VALUES(1,11)',

     

start_date => SYSDATE,

     

repeat_interval => 'FREQ = MINUTELY; INTERVAL = 1',

     

comments => 'Iam tesing scheduler');端;

当我运行此命令时,oracle会抛出这些错误

  

ORA-06550:第15行,第3栏:

     

PLS-00103:遇到符号   期待下列之一的“文件结束”:

     

符号   “;”取代“文件结束”继续。

我不明白什么导致了这个错误。你知道导致这个错误的原因吗?或者为什么会这样?

提前谢谢!

-David

1 个答案:

答案 0 :(得分:0)

JOB_ACTION必须是有效的PL / SQL块,而不仅仅是有效的SQL语句。使用此:

job_action => '
  BEGIN
    INSERT INTO PatientClassRelObs(patientClassID,observationTypeID)
    VALUES (1, 11);
  END;',

<强>更新

可能这是特定环境或某些未发布的代码的问题。要进行故障排除,请从已知可行的方法开始,并一次添加一个小的更改,直到出现故障。

使用SQL * Plus从这段代码开始。

SQL> begin
  2     dbms_scheduler.create_job(
  3             job_name   => 'TEST_JOB',
  4             job_type   => 'PLSQL_BLOCK',
  5             job_action => 'BEGIN NULL; END;',
  6             start_date => systimestamp,
  7             enabled    => true);
  8  end;
  9  /

PL/SQL procedure successfully completed.

SQL> select status, log_date from dba_scheduler_job_run_details where job_name = 'TEST_JOB';

STATUS                         LOG_DATE
------------------------------ ---------------------------------------------------------------------------
SUCCEEDED                      26-MAR-14 11.37.59.533000 PM -05:00