DECLARE
   job_no_  NUMBER;   
BEGIN   
   DBMS_JOB.SUBMIT(job_no_,
                   'insert_Prod;',             -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
           sysdate,
                   'TRUNC(sysdate)+1+2/24');     -- 2/24 每天凌晨2点
   COMMIT;
END; 这是网上找的job 这么写就报错了,看你写的job里是:
interval => 'trunc(sysdate, ''hh24'') + 1/24'
这么多引号,为什么这些写就不报错呢?我想改成每周3执行一次,不知道怎么改呀,不知道引号加哪
上次那个问题是 http://topic.csdn.net/u/20111103/09/fa33591c-d326-4395-afc2-659bf018b1e8.html?seed=1594632610&r=76417627#r_76417627

解决方案 »

  1.   

    每三周执行一次:
    interval => 'trunc(sysdate, ''dd'') + 3*7'
      

  2.   

    declare jobid integer;
    begin
      sys.dbms_job.submit(job => jobid,
                          what => 'execute immediate ''truncate table ent_basetemp'';INSERT INTO ENT_BASE SELECT * FROM "Ent_Base"@UEB; commit;',
                          next_date => to_date('10-11-2011 13:10:11', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'trunc(sysdate, ''dd'') + 3*7');
      commit;
    end;报错了
      

  3.   

    "Ent_Base"@UEB 他们设计这个表的时候要加引号,这么写dblink在'...' 里报错  
      

  4.   

    报错是因为   what => 'execute immediate ''truncate table ENT_BASE'';INSERT INTO ENT_BASE SELECT * FROM "Ent_Base"@UEB; commit;', 导致的FROM "Ent_Base"@UEB; 值过多
    Ent_Base表在设计的时候就是加引号的,不加不能用查不到
    要每周三 不是三周
      

  5.   

    谁能告诉我 interval => 'trunc(sysdate, ''dd'') + 3*7');
     怎么改成 每周三执行
      

  6.   

    先问下lz,直接执行INSERT INTO ENT_BASE SELECT * FROM "Ent_Base"@UEB会报错吗?
    每周三执行的话要设定成下个周三执行,时间间隔为一周
    next_date => to_date('16-11-2011 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
    interval => 'sysdate + 7'