今天我尝试了一下oracle的job,做了个简单的应用,出现点问题想不明白,请求各位大大为我解惑.
答案满意直接100分奉上
写出我的步骤如下:
1.创建job_test表,jobtest_sequence用于测试。表字段id number(8),insert_date varchar2(20)
2.创建存储过程job_test_pro,代码如下:create or replace procedure job_test_pro
as 
begin
    insert into job_test values(jobtest_sequence.nextval,to_char(sysdate,'yyyy-MM-dd hh24:mm:ss'));3.创建job,命令类型选择为存储过程,然后设置了每分钟重复调用存储过程job_test_pro。
4.运行job。
然后,过了几分钟以后我去查表job_test,发现确实是插入了数据,但插入的数据都是如下的样子:
id        insert_date
1     2010-02-08 16:02:07
2     2010-02-08 16:02:07
3     2010-02-08 16:02:07
4     2010-02-08 16:02:07
5     2010-02-08 16:02:07
6     2010-02-08 16:02:07
7     2010-02-08 16:02:07
我的问题是为什么没有把job执行的时候的系统当前时间取出来插入到测试表中呢?为什么会一直插入job第一次执行时的时间呢 ?
查看了job日志,执行时间确实是每分钟一次,日志时间记录也是ok的

解决方案 »

  1.   

    补充一下存储过程没写完全......create or replace procedure job_test_pro
    as 
    begin
        insert into job_test values(jobtest_sequence.nextval,to_char(sysdate,'yyyy-MM-dd hh24:mm:ss'));
    end
    /
      

  2.   

    另外就是我想在做一些比如定时统计的功能并且根据统计结果修改数据库的操作时,按如上步骤把业务写在存储过程中,用job来调度是否没什么问题?还需要注意什么问题吗 ?
    求赐教~~~~
      

  3.   

    应该是你的日期格式的问题吧。试试看。
    create or replace procedure job_test_pro
    as 
    begin
        insert into job_test values(jobtest_sequence.nextval,to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'));
      

  4.   


    hh24:mm:ss----->hh24:mi:ss
      

  5.   

    我执行下面语句的时间是2010-02-08 17:36:46,日期格式不一样执行的
    结果不同,见下:在oracle中好像没有“yyyy-MM-dd hh24:mm:ss”,这个好像是java中的,
    这样的日期格式写法,
    应该修改为“yyyy-MM-dd hh24:mi:ss”。
    已用时间:  00: 00: 00.04
    SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY
    -------------------
    2010-02-08 17:36:46已用时间:  00: 00: 00.03SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') from dualTO_CHAR(SYSDATE,'YY
    -------------------
    2010-02-08 17:02:55已用时间:  00: 00: 00.00
      

  6.   

    SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 世界末日 from dual;世界末日
    -------------------
    2010-02-08 17:02:55SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 世界末日 from dual;世界末日
    -------------------
    2010-02-08 17:02:02SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 世界末日 from dual;世界末日
    -------------------
    2010-02-08 17:02:15SQL> select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 世界末日 from dual;世界末日
    -------------------
    2010-02-08 17:02:19SQL>楼主的秒都不变?
      

  7.   

    首先回9楼,我用select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') from dual在sqlplus里执行确实可以取到当前系统时间,每次取时间也都是不一样的值。但问题是这个句子写在plsql里以后在job里就不行,job就只取执行第一次的那个时间。3-4楼的兄弟给出的解决方案OK,看来是我大意了。但oracle也真够气人的,我写完sql先去sqlplus试了下,取出当前时间一点问题都没有写到plsql里就出问题真是非常的郁闷