繁体   English   中英

无法处理SQL命令-Oracle Job Scheduler

[英]Failed to Process SQL Command - Oracle Job Scheduler

我正在尝试使用SQL Developer设置一个简单的计划作业,但无法通过错误消息设置该作业:-

无法处理SQL命令

开发人员日志给了我两个条目...

Level   Seq Elaps   Source                              Message
SEVERE  32  62  oracle.dbtools.scheduler.generator.DBMSSchedulerCodeGenerator   Can't find template CREATE_JOB_DESTINATION_CREDENTIAL.st
SEVERE  31  0   oracle.dbtools.scheduler.generator.DBMSSchedulerCodeGenerator   Can't find template CREATE_JOB_DESTINATION_CREDENTIAL.st

这是该工作的代码摘要,它是对一个表中的一行的简单更新,我想每天在一个测试实例上进行一次测试

BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB (
        job_name => '"CHEROKEE_BACKUP".""',
        job_type => 'PLSQL_BLOCK',
        job_action => 'BEGIN
alter table drawing disable all triggers;
update DRAWING set proj_id = 1, site_id = 1, chg_num = 0, plant_id = 1, unit_id = 1, user_name = ''INTOOLS'', dwg_type_id = 1, chg_status = ''W'', chg_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), dwg_num = 0, curr_rev_num = 0, dwg_title1 = '' '', dwg_title2 = '' '', dwg_title3 = '' '', dwg_name = '' '', ven_prop_by = '' '', ven_prop_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_dsgn_by = '' '', ven_dsgn_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_drwn_by = '' '', ven_drwn_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_ck_by = '' '', ven_ck_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), ven_appr_by = '' '', ven_appr_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), cl_ck_by = '' '', cl_ck_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), cl_engr_by = '' '', cl_engr_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), cl_appr_by = '' '', cl_appr_date = TO_DATE(''28-02-1995'',''DD-MM-YYYY''), area_id = 1, bmp_file_name = '' '', bmp_file_path = '' '', dwg_desc = '' '', output_dwg_fmt_id = 0, parent_id = 0, format_id = 0, rev_id = 0, eng_proj_id = 10, eng_ref_id = 10, merge_release_flg = ''N'' where dwg_id = 0;
alter table drawing enable all triggers;
commit;
END;',
        number_of_arguments => 0,
        start_date => TO_TIMESTAMP_TZ('2014-07-15 14:45:46 America/Chicago','YYYY-MM-DD HH24.MI.SS TZR'),
        repeat_interval => 'FREQ=DAILY',
        end_date => TO_TIMESTAMP_TZ('2014-07-31 14:45:46 America/Chicago','YYYY-MM-DD HH24.MI.SS TZR'),
        job_class => '"SYS"."DEFAULT_JOB_CLASS"',
        enabled => FALSE,
        auto_drop => FALSE,
        comments => '');

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE( 
         name => '"CHEROKEE_BACKUP".""', 
         attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE( 
         name => '"CHEROKEE_BACKUP".""', 
         attribute => 'max_run_duration', value => INTERVAL '1' HOUR);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE( 
         name => '"CHEROKEE_BACKUP".""', 
         attribute => 'schedule_limit', value => INTERVAL '1' HOUR);

SYS.DBMS_SCHEDULER.enable(
         name => '"CHEROKEE_BACKUP".""');
END; 

它的模板是什么? 为什么找不到它们? 我没有正确设置什么?

任何指导更大的赞赏

我对您的错误消息提到的模板一无所知,但是我可以告诉您,您为工作运行的PL / SQL块无效,并且无法编译:

BEGIN
  alter table drawing disable all triggers;
  update DRAWING set proj_id = 1, site_id = 1, -- rest of line snipped
  alter table drawing enable all triggers;
  commit;
END;

由于ALTER无法在PL / SQL中使用,因此无法编译。 要执行诸如CREATE ALTERDROP DDL,您需要使用EXECUTE IMMEDIATE

此外,DDL语句在执行前后都会执行隐式提交,因此您块中的commit语句是多余的。

请尝试以下操作:

BEGIN
  execute immediate 'alter table drawing disable all triggers';
  update DRAWING set proj_id = 1, site_id = 1, -- rest of line snipped
  execute immediate 'alter table drawing enable all triggers';
END;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM