我现在有一个存储过程,每天零点定时运行,我想在一张表里记录每天运行的开始时间,结束时间,和运行是否成功,应该怎么写?是在这个存储过程里写吗?开始和结束时间,还有运行的状态怎么获得呢?谢谢!

解决方案 »

  1.   

    表里的开始结束时间可以取数据库当前的时间,select sysdate from dual;
    运行的状态的话,你可以自己定义啊,比如's'表示成功'f'表示失败,那么在存储过程
    运行成功,最后要结束的时候往表里插's',在处理异常的时候往表里插'f'
      

  2.   

    你查看一下你的存储过程是通过方式来执行?一、如果是用oracle的job来执行的话:你可以用select * from user_jobs查看你的存储过程执行开始时间,结束时间,是否运行成功等信息。二、如果是unix的shell调用存储过程,那需要在存储过程里面写。三、如果是windows的执行计划调用,那需要在存储过程里面写。应该怎么写,要看你的业务逻辑,是对数据库进行什么操作,要不情况很多,也不好一一列举。
      

  3.   

    是用JOB来执行的,比较方便,但是user_jobs是个系统表,我没有权限,DBA也不会让你读这张表的,所以还得想其他办法
      

  4.   

    说明时候执行是根据你的job设置来确定的
    只要保证job能正常运行  存储过程每次执行的周期及时间点是固定的
      

  5.   

    晕,在存储过程开头insert到记录表一条记录,在程序末尾再insert到记录表一条记录不就可以了么?
      

  6.   

    建议在shell里面运行,建立一个日志表记录执行是否成功,shell里面执行用crontab调用,并且记录log
    数据库记录执行结束时间,方法很多。
      

  7.   

    你可以从这张系统表中查数据:
    PROCQUEUE  
    表中相关字段:
    STATUS   运行的状态
    RUNDATE  开始运行的日期
    RUNTIME  开始运行的时间
    ENDDATE  运行结束后的日期
    ENDTIME  运行结束后的时间查询时,可以这样写
    SELECT p.PROG 存贮过程名,p.STATUS 执行结果,p.RUNDATE 开始运行日期,p.RUNTIME 开始运行时间,p.ENDDATE 运行结束日期,p.ENDTIME 运行结束时间 FROM PROCQUEUE p
    WHERE p.PROG='你调用的存贮过程名'然后你可以把这些信息插入到自己的表中
      

  8.   


    SHELL是啥,呵呵 刚学ORACLE,啥都不懂
      

  9.   

    没有你说的那张表啊 是ORACLE吗
      

  10.   

    我现在不知道怎么判断是否成功,怎么才算成功?跑完了就算成功?然后在存储过程后面写个UPDATE,把成功的状态插入日志表?比如字段为statue,成功就插入1,那怎么算不成功呢?最后加个EXCEPTION吗?
      

  11.   

    创建一个程序运行日志表,里面具体字段可自行定义具体的你可以在程序的begin 赋值 v_Begin_Date  : sysdate 变量在每个exception 处 进行写 异常日志 insert 日志表 values(sqlerrm) 错误说明