现在写好了个存储过程需要每天运行一次  暂时写的是每天晚上12点运行一次
但是以前没写过job  有些问题问下各位大虾
declare jobno number;
begin
sys.dbms_job.submit(:jobno,'test;',SYSDATE,'TRUNC(SYSDATE + 1)');
commit;
end;
上面那个是我写的job有以下几个问题问下各位
我的创建job写的是否有问题?
如果写的没问题  那我在plsql中的command window中运行怎么没有任何反应
job中没有新的job出现,也没有报错。第一次写这个..大家帮帮忙..

解决方案 »

  1.   

    declare sdate varchar2(10);
    begin
      sdate := to_char(sysdate,'yyyy-mm-dd');
      PROC_EXEC_BY_GROUP(sdate,'D015');
    end;
      

  2.   

    创建一个简单的job
    步骤如下:
    1、创建一张表g_test
    create table G_TEST
    (
    ID     NUMBER(12),
    C_DATE DATE
    )
    2、创建一个sequence
    create sequence G_SEQ
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 141
    increment by 1
    cache 20;3、创建一个存储过程
    create or replace procedure prc_g_test is
    begin
    insert into g_test values(g_seq.nextval,sysdate);
    end prc_g_test;4、创建job,
    使用Submit()过程,工作被正常地计划好。
    这个过程有五个参数:job、what、next_date、interval与no_parse。PROCEDURE Submit ( job       OUT binary_ineger,
    What      IN  varchar2,
    next_date IN  date,
    interval  IN  varchar2,
    no_parse  IN  booean:=FALSE)job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
    what参数是将被执行的PL/SQL代码块。
    next_date参数指识何时将运行这个工作。
    interval参数何时这个工作将被重执行。
    no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
    指示此PL/SQL代码在它第一次执行时应进行语法分析,
    而FALSE指示本PL/SQL代码应立即进行语法分析。在command window窗口中执行下面脚本
    variable job1 number;
    begin
    sys.dbms_job.submit(job => :job,
    what => 'prc_g_test;',
    next_date => to_date('22-10-2008 10:06:41', 'dd-mm-yyyy hh24:mi:ss'),
    interval => 'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
    commit;
    end;
    /----------------------------------------------------------------------------------
    在plSQL中我的做法是:declare  
    job number;     
    begin
    sys.dbms_job.submit(job,'prc_g_test;',sysdate,'sysdate+1/1440');
    end;
    ----------------------------------------------------------------------------------5、查看创建的job
    查看相关job信息
    1、相关视图
    dba_jobs
    all_jobs
    user_jobs
    dba_jobs_running 包含正在运行job相关信息。
    如:
    select * from dba_jobs6、运行JOB
    说明:Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:
    SQL> begin
    2  dbms_job.run(:job);
    3  end;
    4  /----------------------------------------------------------------------------------
    在plSQL中我的做法是:
    begin
    dbms_job.run(3017);
    end;
    ----------------------------------------------------------------------------------7、删除JOB
    SQL> begin
    2  dbms_job.remove(:job);--:job可以用dba_jobs.job的值代替如:1198
    3  end;
    4  /
      

  3.   

    这些我都看过了,我就是看了这些之后写的job
    出现了我提出的问题。
      

  4.   

    这么样试验一下。
    dbms_job.submit(:jobno,'test;',sysdate,'sysdate+1/1440');
    dbms_job.run(:jobno);
      

  5.   

    这样会报错ORA-00900: invalid SQL statement