如题!高手帮帮忙!!!

解决方案 »

  1.   

    在job上设置定时运行的时间和间隔时间
      

  2.   

    给你个例子DECLARE
      X NUMBER;
    BEGIN
      SYS.DBMS_JOB.SUBMIT
      ( job       => X 
       ,what      => 'SP_MAKE_AP030
      (sysdate-3/* 输入参数1 DATE */ ,
       sysdate/*输入参数2 DATE */ ,
       0 /* 输入参数3 NUMBER */ ,
       ''SYSTEM''/* 输入参数4 VARCHAR2 */  );'
       ,next_date => to_date('22/12/2009 06:00:00','dd/mm/yyyy hh24:mi:ss')
       ,interval  => 'trunc(SYSDATE+1)+1/4'
       ,no_parse  => FALSE
      );
      SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
    COMMIT;
    END;
      

  3.   

    to: hebo2005  我按你给我的例子写了一个类似的报错啊!
    这是我写的 
      表:   create table t(name varchar2(10),time date);
     存储过程:
                create or replace procedure pro_asd(
                  name in varchar2 )
                is 
                begin
                   insert into tt values(sysdate,name);
                end;
     job:  variable job1 number;
           begin
           sys.dbms_job.submit(job =>:job1,
           what =>'pro_asd('name')',
           next_date =>sysdate,
           interval =>'sysdate+1/1440',
           no_parse =>false);
           sys.dbms_output.put_line('success');
           commit;
           end;
     执行的时候报错:是不是传值(name)传的不对啊?
      

  4.   

    to:   hebo2005     我按你给我的例子写了一个类似的报错啊! 
    这是我写的   
        表:       create   table   t(time   date,name   varchar2(10)); (刚才写错了)
      存储过程: 
                            create   or   replace   procedure   pro_asd( 
                                name   in   varchar2   ) 
                            is   
                            begin 
                                  insert   into   tt   values(sysdate,name); 
                            end; 
      job:     variable   job1   number; 
                  begin 
                  sys.dbms_job.submit(job   => :job1, 
                  what   => 'pro_asd( 'name ') ', 
                  next_date   => sysdate, 
                  interval   => 'sysdate+1/1440 ', 
                  no_parse   => false); 
                  sys.dbms_output.put_line( 'success '); 
                  commit; 
                  end; 
      执行的时候报错:是不是传值(name)传的不对啊?
      

  5.   

    name 用上两个单引''name''
      

  6.   

    to:shiyiwan
    加上两个单引 也报错
    ORA-06550: 第 1 行, 第 105 列: 
    PLS-00103: 出现符号 "END"在需要下列之一时:
     := . ( % ;
    符号 ";" 被替换为 "END" 后继续。
    ORA-06512: 在"SYS.DBMS_JOB", line 79
    ORA-06512: 在"SYS.DBMS_JOB", line 136
    ORA-06512: 在line 3
      

  7.   

    把JOB里面的这一行 what  => 'pro_asd( 'name ') ', 
    改成what  => 'pro_asd( ''name''); ',再试下
      

  8.   

    加上单引号也报错
    ORA-06550: 第 1 行, 第 105 列: 
    PLS-00103: 出现符号 "END"在需要下列之一时: 
    := . ( % ; 
    符号 ";" 被替换为 "END" 后继续。 
    ORA-06512: 在"SYS.DBMS_JOB", line 79 
    ORA-06512: 在"SYS.DBMS_JOB", line 136 
    ORA-06512: 在line 3
      

  9.   

    what里面要用分号结束。改为
    what  => 'pro_asd(''name'');', 
      

  10.   

        variable  job1  number; 
                  begin 
                  sys.dbms_job.submit(job  => :job1, 
                  what  => 'pro_asd( ''name '') ', 
                  next_date  => sysdate, 
                  interval  => 'sysdate+1/1440 ', 
                  no_parse  => false); 
                  sys.dbms_output.put_line( 'success '); 
                  commit; 
                  end; 
      

  11.   

    谢谢了,追加10分给shiyiwan和tKF12183