要监控存储过程执行时候的中间数据,
有什么好的方法或工具啊 ?
因为要测试的存储过程多,不可能每个都断点调试跟踪,
想整个通用的,大家帮忙看看,小女谢了啊!
急啊!

解决方案 »

  1.   

    使用自治存储过程(在存储过程的变量定义部分使用pragma autonomous_transaction)来记录中间数据,这样即使被监控的存储过程没有提交(commit)也能查到要监控的数据;
      

  2.   

    pl/sql developor 可以对存储过程进行跟踪
      

  3.   

    pl/sql developor 可以对存储过程进行跟踪,
    问题是我现在需要自动记录日志,因为很多存储过程要测试。
      

  4.   

    create or replace procedure F_PUB_WRITE_EVENTLOG
    (
      pi_EventLog   IN        EventLog%ROWTYPE,         -- 日志信息
      po_returncode IN OUT    VARCHAR2,                 -- 返回代码
      po_returnmsg  IN OUT    VARCHAR2                  -- 返回信息
    )
    IS
      vn_Ret           PLS_INTEGER;
      vc_Logser        EventLog.Logser%TYPE;
      pragma autonomous_transaction;
    BEGIN
      vn_Ret := F_GET_Sequence('******',1,po_returncode,po_returnmsg,vc_Logser);
      IF vn_Ret != 0 THEN
        rollback;
        return(-1);
      END IF;
    --
      INSERT INTO EventLog
      (
        LOGSER,
        OPTIME,
        OPID,
        SERVICEID,
        RETURNCODE,
        returnmsg,
        SUMMARY
      )
      VALUES
      (
        vc_Logser,
        SysDate,
        pi_EventLog.Opid,
        pi_EventLog.SERVICEID,
        pi_EventLog.RETURNCODE,
        pi_EventLog.returnmsg,
        pi_EventLog.Summary
      );
        po_RETURNCODE :=  pi_EventLog.RETURNCODE;
        po_ReturnMsg  :=  pi_EventLog.returnmsg;
        po_returncode := nvl(po_RETURNCODE ,'0000');
        if po_returncode = '0000' then
            po_ReturnMsg  := '成功';
        end if;
      commit;
      return;
    EXCEPTION
      WHEN others THEN
        po_returncode := '0673'; -- 数据库错误
        po_returnmsg  := F_Get_ErrMsg(po_returncode)||sqlerrm;
        rollback;
        return(-1);
    END F_PUB_WRITE_EVENTLOG;
      

  5.   

     F_GET_Sequence
    这个函数是干嘛的?取sequence id 的 吗?
    还有没有其他用途
      

  6.   

    F_GET_Sequence 
    这个函数是干嘛的?取sequence id 的 吗? 
    还有没有其他用途
      

  7.   

    建个table,让他来记录你想看到的的信息。可以观察执行到那一步了。