精华内容
下载资源
问答
  • 2021-05-01 07:37:39

    场景:

    oracle存储过程执行中输出日志文件

    create or replace procedure p_outputdebug(a varchar2,b varchar2,c varchar2)

    is

    vFileName varchar2(100);

    OutputFile UTL_FILE.FILE_TYPE;

    begin

    select 'rfid_'||a.rfid||'.log'

    into vFileName

    from tbl_animal_info a where a.rfid='330100000078176'

    ;

    OutputFile := utl_file.fopen('background_dump_dest',vFileName,'a');

    utl_file.putf(OutputFile,a,b,c);

    utl_file.fflush(OutputFile);

    utl_file.fclose(OutputFile);

    end ;

    SQL> create or replace directory "background_dump_dest"as 'D:\database\cares100\bdump';

    Directory created

    SQL> grant read on directory "background_dump_dest" to myuser;

    Grant succeeded

    SQL> grant write on directory "background_dump_dest" to myuser;

    Grant succeeded

    SQL> call myuser.p_outputdebug('1','1','1');

    Method called

    --需要注意的一点是:日志目录需创建在oracle所在服务器上,否则报错。

    UTL_FILE.FOPEN 用法

    参考http://blog.csdn.net/cnham/article/details/5927700

    我的异常网推荐解决方案:oracle存储过程,http://www.myexceptions.net/oracle-develop/177537.html

    更多相关内容
  • 本包用于记录存储过程里面的日志,将日志信息写入日志表(mylog)。可以记录日志时间、过程名称、过程里面记录日志的行数、参数值。如果在异常处理部分记录日志,还可以记录异常代码、异常原因、异常产生的行数。 本人...
  • 主要介绍了oracle数据库中查看系统存储过程的方法,需要的朋友可以参考下
  • oracle存储过程错误日志

    千次阅读 2019-10-31 15:04:38
    转载别人的,在这里记录一下 ...第一步、创建日志表,用来存放oracle存储过程日志 create table TBL_WLF_SYS_LOG ( S_TIME VARCHAR2(32) not null, S_LEVEL VARCHAR2(32), S_PROCNAME VARCHAR2(64), ...

    转载别人的,在这里记录一下
    原文链接

    第一步、创建日志表,用来存放oracle存储过程的日志

    create table TBL_WLF_SYS_LOG
    (
          S_TIME            VARCHAR2(32) not null,
        S_LEVEL            VARCHAR2(32),
        S_PROCNAME        VARCHAR2(64),
        S_MSG            VARCHAR2(4000),
        S_ADVICE        VARCHAR2(1024)
    )
    tablespace TBS_WLF_DAT;
    -- Add comments to the table 
    comment on table TBL_WLF_SYS_LOG
      is '存储过程日志表';
    -- Add comments to the columns 
    comment on column TBL_WLF_SYS_LOG.S_TIME
      is '操作时间';
    -- Add comments to the columns 
    comment on column TBL_WLF_SYS_LOG.S_LEVEL
      is '操作级别';
    -- Add comments to the columns 
    comment on column TBL_WLF_SYS_LOG.S_PROCNAME
      is '执行存储过程名称';
    -- Add comments to the columns 
    comment on column TBL_WLF_SYS_LOG.S_MSG
      is '错误信息';
    -- Add comments to the columns 
    comment on column TBL_WLF_SYS_LOG.S_ADVICE
      is '建议信息';
    

    第二步、建立日志存储过程

    CREATE OR REPLACE PROCEDURE prc_wlf_sys_writelog(
      i_flag       INTEGER,
      i_id         INTEGER,
      str_procname varchar2,
      str_msg      varchar2,
      str_advice   varchar2
    ) IS
      -- 操作时间
      str_time   varchar2(32);
      -- 操作级别
      str_level  varchar2(32);
      -- 执行存储过程名称
      p_procname varchar2(1024);
      -- 错误信息,或者记录信息
      p_msg      varchar2(1024);
      -- 建议信息
      p_advice   varchar2(1024);
    
    BEGIN
      IF (i_flag = 2 AND i_id >= 1 AND i_id <= 4) THEN
        CASE
          WHEN i_id = 1 THEN
            str_level := 'log';
          WHEN i_id = 2 THEN
            str_level := 'debug';
          WHEN i_id = 3 THEN
            str_level := 'alarm';
          ELSE
            str_level := 'error';
        END CASE;
        p_procname := str_procname;
        p_msg      := str_msg;
        p_advice   := str_advice;
      ELSE
        str_level  := 'error';
        p_procname := 'p_public_writelog';
        p_msg      := 'writelog_error';
        p_advice   := '';
      END IF;
    
      str_time := to_char(SYSDATE, 'yyyy-mm-dd hh24:mi:ss');
    
      INSERT INTO tbl_wlf_sys_log
        (s_time, s_level, s_procname, s_msg, s_advice)
      VALUES
        (str_time, str_level, p_procname, p_msg, p_advice);
      COMMIT;
    END prc_wlf_sys_writelog;
    /
    

    第三步、在我们自己的存储过程中,调用日志存储过程(第二步中的)
    加粗的是要求加上的

    CREATE OR REPLACE PROCEDURE A_select1(
                                                            --传入实参
                                                            p_orgIds IN VARCHAR2,
                                                            p_period IN VARCHAR2,
                                                            p_userId IN VARCHAR2,
                                                            p_result OUT VARCHAR2)
    
     IS
    
      v_orgId            VARCHAR2(32);
      v_qty              INTEGER;
      v_finish_qty       INTEGER;
      v_status           INTEGER;
      v_month_report_num INTEGER;
      v_date             VARCHAR2(32);
      v_date2            VARCHAR2(32);
      v_date3            VARCHAR2(32);
      
      v_date4            VARCHAR2(32);
      v_date5            VARCHAR2(32);
      
       -- debug信息
        v_debugmsg      varchar2(1024);
        -- 错误信息
        v_errmsg      varchar2(1024);
        
      CURSOR c_orgIds IS
        select a.ORG_ID org_id
          from base_hs_health_org a
          left join (select distinct u.ref_id as org_id
                       from com_user u
                       left join com_user_role ur
                         on u.id = ur.user_id
                       left join com_role r
                         on r.id = ur.role_id
                      where r.id = '099d0eae68464cd59d83caed570a823f') H
            on a.org_id = H.ORG_ID
           where H.ORG_ID is not null
         start with a.org_id = p_orgIds
        connect by prior a.org_id = parent_id;
    
    begin
    **-- 存储过程开始日志
    v_debugmsg := 'A_select1 begin  log- ';
    prc_wlf_sys_writelog(2, 2, 'A_select1', v_debugmsg, '');**
    
    
    
      p_result := 0;
      ---遍历所有上报机构
      OPEN c_orgIds;
    LOOP
        FETCH c_orgIds
          INTO v_orgId;
        EXIT WHEN c_orgIds%NOTFOUND;
        BEGIN
           -- 表示输出buffer不受限制。
          DBMS_OUTPUT.ENABLE(buffer_size => null);
          -- DBMS_OUTPUT.PUT_LINE(v_orgId);
          --- 清除原有数据
         --- delete from rhsa_hs4_import_detail
         ---  where period = p_period
         ---    and org_id = v_orgId;
    
    v_date4:=dbms_utility.get_time;
    
     ---填报数量
          select count(*)
            into v_qty
            from RHSA_HS4_1_2013_TEMP
          where org_id = v_orgId
          and period in (select * from table(splitstr(p_period,',')));
    
    
    -- 计算时间差
    v_date5:=dbms_utility.get_time;
    dbms_output.put_line('时间差: '||(v_date5-v_date4)|| ' 毫秒  '   ||' 机构id: '||v_orgId|| ' v_qty: '||v_qty);
    
    
           
        END;
      END LOOP;
      CLOSE c_orgIds;
      p_result := 1;
      
       **-- 存储过程开始日志
      v_debugmsg := 'A_select1 end  log- ';
      prc_wlf_sys_writelog(2, 2, 'A_select1', v_debugmsg, '');**
      
      
    EXCEPTION
      WHEN OTHERS THEN
        p_result := 0;
        
        **begin
          rollback;
          v_errmsg := 'sqlexception~~sqlcode:' || to_char(sqlcode) ||
                      ' sqlstate:' || substr(sqlerrm, 1, 512);
          prc_wlf_sys_writelog(2, 4, 'A_select1', v_errmsg, '');
        end;**
        
        
        
    end;
    
    
    展开全文
  • oracle 存储过程记录执行日志

    万次阅读 2019-06-11 18:06:16
    创建一个序列,用于标识[存储过程,函数,触发器]执行先后顺序 create sequence SEQ_PROGRAM_EXECUTE_LOG minvalue 1 maxvalue 1000000000000 ...创建日志表,用于存储[存储过程,函数,触发器]执行日志 CREATE TABL...

    本文主要介绍如何记录存储过程执行详细日志,统计存储过程执行时间,实现逻辑如下:

    • 创建一个序列,用于标识[存储过程,函数,触发器]执行先后顺序
    create sequence SEQ_PROGRAM_EXECUTE_LOG
    minvalue 1
    maxvalue 1000000000000
    start with 1
    increment by 1
    cache 100
    cycle
    order;
    
    • 创建日志表,用于存储[存储过程,函数,触发器]执行日志
    CREATE TABLE PROGRAM_EXECUTE_LOG
    (
      PROGRAM_NAME      VARCHAR2(1000),
      IS_SUCCEED        CHAR(1),
      LOG_DATE          DATE,
      EXECUTE_MSG       CLOB,
      TIME_CONSUMING    NUMBER,
      EXECUTE_ORDER     NUMBER,
      EXECUTE_BEGINTIME TIMESTAMP(6),
      EXECUTE_ENDTIME   TIMESTAMP(6),
      PROCESS_FLAG      VARCHAR2(10) DEFAULT 'N'
    );
    -- Add comments to the table 
    comment on table PROGRAM_EXECUTE_LOG
      is '过程、函数、触发器执行性能日志';
    -- Add comments to the columns 
    comment on column PROGRAM_EXECUTE_LOG.program_name
      is '程序名称';
    comment on column PROGRAM_EXECUTE_LOG.is_succeed
      is '执行结果(成功Y,失败N)';
    comment on column PROGRAM_EXECUTE_LOG.log_date
      is '日志时间';
    comment on column PROGRAM_EXECUTE_LOG.execute_msg
      is '执行详细信息';
    comment on column PROGRAM_EXECUTE_LOG.time_consuming
      is '耗时';
    comment on column PROGRAM_EXECUTE_LOG.execute_order
      is '流水号-SEQ_PROGRAM_EXECUTE_LOG';
    comment on column PROGRAM_EXECUTE_LOG.execute_begintime
      is '执行开始时间';
    comment on column PROGRAM_EXECUTE_LOG.execute_endtime
      is '执行结束时间';
    comment on column PROGRAM_EXECUTE_LOG.process_flag
      is '处理标识(已处理Y,未处理N)';
    CREATE INDEX PROGRAM_EXECUTE_LOG_IDX1 ON PROGRAM_EXECUTE_LOG (EXECUTE_ORDER);
    CREATE INDEX PROGRAM_EXECUTE_LOG_IDX2 ON PROGRAM_EXECUTE_LOG (TIME_CONSUMING);
    
    • 创建计算耗时的函数
    CREATE OR REPLACE FUNCTION F_TIMESTAMP_DIFF(ENDTIME   IN TIMESTAMP,
                                                STARTTIME IN TIMESTAMP)
      RETURN INTEGER AS
      STR      VARCHAR2(50);
      MISECOND INTEGER;
      SECONDS  INTEGER;
      MINUTES  INTEGER;
      HOURS    INTEGER;
      DAYS     INTEGER;
    BEGIN
      STR      := TO_CHAR(ENDTIME - STARTTIME);
      MISECOND := TO_NUMBER(SUBSTR(STR, INSTR(STR, ' ') + 10, 3));
      SECONDS  := TO_NUMBER(SUBSTR(STR, INSTR(STR, ' ') + 7, 2));
      MINUTES  := TO_NUMBER(SUBSTR(STR, INSTR(STR, ' ') + 4, 2));
      HOURS    := TO_NUMBER(SUBSTR(STR, INSTR(STR, ' ') + 1, 2));
      DAYS     := TO_NUMBER(SUBSTR(STR, 1, INSTR(STR, ' ')));
      RETURN DAYS * 24 * 60 * 60 * 1000 + HOURS * 60 * 60 * 1000 + MINUTES * 60 * 1000 + SECONDS * 1000 + MISECOND;
    END;
    
    • 创建日志记录过程
    CREATE OR REPLACE PROCEDURE SYS_SAVELOG(PROGRAM_NAME VARCHAR2, --过程名称
                                             IS_SUCCEED   VARCHAR2, --是否执行成功 Y|N
                                             EXECUTE_MSG  CLOB, --过程执行信息
                                             BEGIN_TIME   TIMESTAMP --过程开始执行TIMESTAMP
                                             ) AS
      V_PROGRAM_NAME VARCHAR2(1000) := SUBSTRB(PROGRAM_NAME, 1, 1000); --过程名称
      V_IS_SUCCEED   CHAR(1) := SUBSTR(IS_SUCCEED, 1, 1); --过程执行成功表示 Y N
      V_BEGIN_TIME   TIMESTAMP := BEGIN_TIME;
      PRAGMA AUTONOMOUS_TRANSACTION; --日志开启自治事务,不影响业务逻辑事务
      /*
      调用方式:
      1.正常日志:PROC_SAVELOG(V_PROC_NAME, 'Y', '执行成功。。。',V_BEGIN_TIME);
      2.异常日志:PROC_SAVELOG(V_PROC_NAME, 'N', SQLERRM,V_BEGIN_TIME);
      */
    BEGIN
      INSERT INTO PROGRAM_EXECUTE_LOG
        (PROGRAM_NAME,
         IS_SUCCEED,
         LOG_DATE,
         EXECUTE_MSG, --已改为CLOB
         TIME_CONSUMING,
         --EXECUTE_ORDER,
         EXECUTE_BEGINTIME,
         EXECUTE_ENDTIME)
      VALUES
        (V_PROGRAM_NAME,
         V_IS_SUCCEED,
         SYSDATE,
         EXECUTE_MSG,
         F_TIMESTAMP_DIFF(SYSTIMESTAMP, V_BEGIN_TIME),
         --PROGRAM_EXECUTE_LOG_SEQ.NEXTVAL,
         V_BEGIN_TIME,
         SYSTIMESTAMP);
      COMMIT;
    EXCEPTION
      WHEN OTHERS THEN
        ROLLBACK;
    END;
    
    • 异常日志处理存储过程
    CREATE OR REPLACE PROCEDURE SYS_PROCESS_ERRMSG(PROC_NAME  VARCHAR2, --过程信息
                                                    EXE_MSG    CLOB, --执行信息
                                                    ERR_MSG    VARCHAR2, --错误信息
                                                    BEGIN_TIME TIMESTAMP, --过程开始执行TIMESTAMP
                                                    RESULT     OUT VARCHAR2) AS
      /*faith@2016.11.24用于处理异常信息,方便后续扩展
      1.执行信息中添加ERR_MSG
      2.执行记录日志过程
      3.错误信息赋值给返回结果RESULT
      调用方式:
      SYS_PROCESS_ERRMSG(V_PROC_NAME, V_EXE_MSG,V_ERR_MSG,V_BEGIN_TIME,RESULT);
      */
    
      V_EXE_MSG CLOB := EXE_MSG;
    BEGIN
      RESULT := 'OK';
      --如果错误信息长度为0,返回OK
      IF LENGTH(ERR_MSG) = 0 OR ERR_MSG IS NULL THEN
        RETURN;
      END IF;
      DBMS_LOB.APPEND(V_EXE_MSG, ERR_MSG || CHR(10));
      SYS_SAVELOG(PROC_NAME, 'I', V_EXE_MSG, BEGIN_TIME);
      ROLLBACK;
      RESULT := ERR_MSG;
    EXCEPTION
      WHEN OTHERS THEN
        RESULT := '处理异常信息发生错误!';
    END;
    
    • 使用样例
      PROCEDURE SYS_SAVELOG_EXAMPLE(PLAN_DATE IN DATE,
                                    CONFIRM   IN VARCHAR2,
                                    RESULT    OUT VARCHAR2) AS
        V_PLAN_DATE  DATE := PLAN_DATE;
        V_CONFIRM    VARCHAR2(10) := CONFIRM; --CONFIRM标识, Y:报工确认  N:报工解锁
        V_ERR_MSG    VARCHAR2(1000);
        V_BEGIN_TIME TIMESTAMP := SYSTIMESTAMP;
        V_PROC_NAME  VARCHAR2(1000) := 'SYS_SAVELOG_EXAMPLE/' ||
                                       TO_CHAR(V_PLAN_DATE,
                                               'YYYY-MM-DD HH24:MI:SS') || '/' ||
                                       V_CONFIRM;
        V_EXE_MSG    CLOB;
      
      BEGIN
      
        DBMS_LOB.CREATETEMPORARY(V_EXE_MSG, TRUE); --初始化CLOB
        RESULT := 'OK';
      
        IF V_CONFIRM = 'Y' THEN
          V_ERR_MSG := '不允许确认今天或者今天之后的数据!'; --今天或者
          GOTO PROCESS_ERRMSG;
        END IF;
      
        COMMIT;
        DBMS_LOB.APPEND(V_EXE_MSG, '执行成功!');
      
        SYS_SAVELOG(V_PROC_NAME, 'Y', V_EXE_MSG, V_BEGIN_TIME);
        --异常处理
        RETURN; --若为顺序执行到此位置,则直接返回
        <<PROCESS_ERRMSG>>
        SYS_PROCESS_ERRMSG(V_PROC_NAME,
                           V_EXE_MSG,
                           V_ERR_MSG,
                           V_BEGIN_TIME,
                           RESULT);
      EXCEPTION
        WHEN OTHERS THEN
          V_ERR_MSG := SUBSTR(SQLERRM, 1, 160);
          DBMS_LOB.APPEND(V_EXE_MSG, V_ERR_MSG);
          SYS_SAVELOG(V_PROC_NAME, 'N', V_EXE_MSG, V_BEGIN_TIME);
          RESULT := V_ERR_MSG; --错误号对应的信息
      END;
    
    • PLSQL 中文乱码解决
    select userenv('language') from dual; 
    -- 配置环境变量
    -- NLS_LANG=sql查询出来的值
    
    展开全文
  • Oracle存储过程中调用日志存储过程

    千次阅读 2018-03-15 17:04:48
    在写存储过程中一般需要书写过程运行日志,但是工作这么长时间自己从没认真研究过调用日志存储过程的问题。现因项目整合需要做日志监控,才发现日志的重要性:create or replace procedure bo_dw.sp_sys_log ( oi_...

       在写存储过程中一般需要书写过程运行日志,但是工作这么长时间自己从没认真研究过调用日志存储过程的问题。现因项目整合需要做日志监控,才发现日志的重要性:

    create or replace procedure bo_dw.sp_sys_log 
    (
        oi_task_id         in out integer ,
        iv_task_name       in     varchar2,
        iv_table_name      in     varchar2,
        iv_task_sign       in     varchar2,
        ii_task_status     in     integer ,
        iv_task_log        in     varchar2,
        iv_task_pos        in     varchar2,
        iv_task_step_stime in     varchar2,
        ii_rowcount        in     integer default null
    )
    /** HEAD
      * @name sp_sys_log
      * @caption 日志记录
      * @type 日志
      * @parameter oi_task_id     inout integer   任务ID,任务状态为1时做输出参数,任务状态为0和其它时做输入参?
      * @parameter iv_task_name   in    varchar2  任务名称
      * @parameter iv_table_name  in    varchar2  目标表名
      * @parameter iv_task_sign   in    varchar2  任务标志,任务的统计时间
      * @parameter ii_task_status in    integer   任务状态,0 程序运行完成,1 程序运行中,其它 出错代码
      * @parameter iv_task_log    in    varchar2  任务日志,正常时为程序运行中或程序运行完成,出错时为出错信息
      * @parameter iv_task_pos    in    varchar2  任务位置,程序中的出错位?
      * @parameter ii_rowcount    int   integer   数据量,可选参数, 缺省值为NULL
      * @description 日志记录
      * @target vgopsys#tb_sys_log 单条日志表
      */
    is
      PRAGMA AUTONOMOUS_TRANSACTION;
      vv_task_memo varchar2(2000) ;
    begin
        /**  --表结构
            create table bo_dw.tb_sys_log
            (
              task_id     number,             -- 任务ID
              task_name   varchar2(30),       -- 程序名称
              table_name  varchar2(30),       -- 目标表名
              task_sign   varchar2(20),       -- 任务标志
              start_time  date,               -- 程序开始时间
              end_time    date,               -- 程序结束时间或出错时?
              task_status number,             -- 任务状态 1开始 0完成 其他失败
              task_log    varchar2(200),      -- 任务日志:正常时为程序运行中或程序运行完成,出错时为出错信息
              task_pos    varchar2(50),       -- 任务位置
              task_remark varchar2(2000)      -- 任务备注:  任务位置:开始时间yyyymmdd :数据量 (分隔符chr(10))
            );
    
            序号
            -- Create sequence
            create sequence seq_sys_proc_log
            maxvalue 9999999999999999999999
            start with 1
            increment by 1;
          */
    
        /** @description 对不同的任务状态,进行不同的日志处理 */
    
        vv_task_memo :='起止时间:'||iv_task_step_stime||' - '||to_char(sysdate,'dd hh24:mi:ss')||'|'|| '位置:'||iv_task_pos||'|'||'sql记录数:'||ii_rowcount;
    
        if ii_task_status = 1 then
            select bo_dw.seq_sys_proc_log.nextval into oi_task_id from dual;
            insert into bo_dw.tb_sys_log
            (
                task_id,            -- 任务ID
                task_name,          -- 程序名称
                table_name,         -- 目标表名
                task_sign,          -- 任务标志
                start_time,         -- 程序开始时间
                end_time,           -- 程序结束时间或出错时间
                task_status,        -- 任务状态
                task_log,           -- 任务日志
                task_pos,           -- 任务位置
                task_memo
            )
            values
            (
                oi_task_id     ,
                iv_task_name   ,
                iv_table_name  ,
                iv_task_sign   ,
                sysdate        ,
                null           ,
                1              ,
                '程序运行中'    ,
                iv_task_pos    ,
                vv_task_memo
            );
        elsif ii_task_status = 2 then
            update bo_dw.tb_sys_log
               set task_pos = iv_task_pos,
                   task_memo= task_memo || chr(10) ||  vv_task_memo
             where task_id = oi_task_id;
        elsif ii_task_status = 0 then
            update bo_dw.tb_sys_log
               set end_time = sysdate,
                   task_status = 0,
                   task_log = '程序运行完成',
                   task_pos = iv_task_pos,
                   task_memo= task_memo || chr(10) ||  vv_task_memo
             where task_id = oi_task_id;
        else
            update bo_dw.tb_sys_log
               set end_time = sysdate,
                   task_status = ii_task_status,
                   task_log = substr(iv_task_log, 1, 200),
                   task_pos = iv_task_pos /*,
                   task_memo= task_memo || chr(10) ||  vv_task_memo*/
             where task_id = oi_task_id;
        end if;
        commit;
    end;
    

      这是一个例子,认真琢磨一下还是能明白的。这里在procedure定义中有个PRAGMA AUTONOMOUS_TRANSACTION,百度解释为 自治事务 对于定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段程序不依赖于主程序,也不干涉主程序

    自治事务的特点:

    第一,这段程序不依赖于原有Main程序,比如Main程序中有未提交的数据,那么在自治事务中是查找不到的。

    第二,在自治事务中,commit或者rollback只会提交或回滚当前自治事务中的DML,不会影响到Main程序中的DML。

    关于自治事务解释来源链接:点击打开链接


    展开全文
  • Oracle存储过程实现记录日志

    千次阅读 2021-04-30 08:05:09
    Oracle存储过程实现记录日志create table-- Create tablecreate table t_cem_proc_logs(id varchar2(32),proc_mc varchar2(100),title varchar2(4000),content clob,log_type varchar2(10),log_time date default s....
  • 如何在oracle存储过程中逐行打印

    千次阅读 2021-05-08 20:21:41
    我正在执行一个存储过程,但它在某个时候失败了, 当前... 例如:如何在oracle存储过程中逐行打印create or replace-- decaring required variablePROCEDURE "PROC_DATA_TABLE_DETAILS" ISFOR TABLEDETAILS IN (SELE...
  • ORACLE数据库存储过程记录错误日志

    千次阅读 2019-08-16 17:26:37
    目前主程序的大部分存储过程都是使用ZL_ErrorCenter来处理程序异常,但是ZL_ErrorCenter的主要功能... 在业务交互平台等三方接口的运行和调试过程中,虽然本身业务交互平台有日志记录,但是查询和定位问题并不是...
  • 基于Oracle存储过程与触发器的三维空间数据日志管理方法.pdf
  • 错误:1. a.非匿名的PLSQL块,is/as后面直接跟变量定义b.只是匿名的PLSQL块才以declare开头c.在任何的PLSQL块内部可以在BEGIN 。。。END之间再定义PLSQL块嵌套,嵌套的PLSQL块可以带DECLARE进行定义所以你的代码中的...
  • oracle job 查询 存储过程

    千次阅读 2021-01-27 02:32:06
    Oracle开发与使用文章收藏收集一些Oracle开发与使用文章,以便于后续查找.【基础类】1.ORACLE函数大全2.Orace常用函数3.oracle 日期函数介绍4.Oracle中常用的to_Char用法详解(有FMT的详细列表)5.ORACLE中日期和时间...
  • 请大神写一个详细示例。要不然我看不懂,急急急 急。有没有 oracle前辈 花点时间,有偿有偿指导一下我。...正常insert会存储过程报错,四条都插不进去,我想继续执行把其他三条正常插入,报错那一条记录的到日志
  • Oracle存储过程导出结果到文本文件

    千次阅读 2018-09-13 09:42:03
    存储过程中,我们经常会使用dbms_output来输出一些调试信息到控制台,方便查看。在使用PLSQL DEV的过程中,经常会遇到缓冲区太小的情况,如果你要显示的内容比较多的话。这个时候我们可以使用oracle提供的UTL_FILE...
  • 查看Oracle 存储过程编译有错误信息

    千次阅读 2021-05-02 03:39:44
    创建一个存储过程有错误,在哪里看:SQL> create or replace procedure p_test(u_name in varchar2,t_bytes in number) is2 v_name varchar2(20);3 objectname varchar2(20);4 v_bytes number;5 begin6 v_name :=...
  • oracle存储过程语法

    千次阅读 2018-10-29 16:39:33
    前两天无意见看见了一个非常适合学习Oracle附上链接:...Oracle存储过程基本语法 存储过程   1 CREATE OR REPLACE PROCEDURE 存储过程名   2 IS   3 BEGIN   4 NULL;   5 END;  行1:   CREAT...
  • oracle存储过程执行中输出日志文件create or replace procedure p_outputdebug(a varchar2,b varchar2,c varchar2)isvFileName varchar2(100);OutputFile UTL_FILE.FILE_TYPE;beginselect 'rfid_'||a.rfid...
  • ORACLE 存储过程异常捕获并抛出

    千次阅读 2021-05-06 01:54:07
    当前情况是,循环表,进行删除,如果出现表不存在,则会异常中断,导致整个存储过程挂掉,需求是要能跳过错误的执行,不进行处理,进行下个循环。最终代码:for tab_name in tables loopbeginexecut...
  • 1、存储过程是自定义的且封装在数据库服务器上的 PLSQL 代码片段,它已经编译好了,可以像调用数据库函数一样来调用存储过程,可以给它传递参数,它也可以有返回值。 2、因为存储过程是编译好放在数据库服务器上的...
  • ORACLE存储中记录日志

    2015-01-20 18:18:06
    自已写的可在ORACLE存储过程中记录运行日志工具包,调用方便简单。
  • oracle存储过程执行中输出日志文件

    千次阅读 2016-05-07 13:30:00
    create or replace procedure p_outputdebug(a varchar2,b varchar2,c varchar2) is vFileName varchar2(100); OutputFile UTL_FILE.FILE_...--需要注意的一点是:日志目录需创建在oracle所在服务器上,否则报错。
  • 相较于oracle,mysql的存储过程就显得比较鸡肋了,所以系统的学习了一下,写下本文记录一下,以后也可以翻看学习,本文所用到的例子均来自oracle11g自带的scott模式,话不多说,直接开始! 一、存储过程 1、简介 ...
  • WHEN OTHERS THEN v_ErrorText := sqlcode|| SQLERRM|| ‘存储过程[Proc_Update_ID_NO]执行失败!’; RAISE_APPLICATION_ERROR(-20003,v_ErrorText); –raise; v_OUT := v_ErrorText ; END Proc_error_process; ...
  • MybatisPlus中调用Oracle存储过程

    千次阅读 2019-12-31 08:58:11
    由于需要将新数据同步到另外的数据库,所以需要使用dblink进行操作,但是dblink不支持写入操作,因此需要调用写好的存储过程才能实现将新数据插入新数据的同时插入旧数据库。 准备工作 预先准备好新旧两个数据库 旧...
  • Oracle---number数据类型讲解 create table Computers ( comNo number(4) constraint pk_comp primary key, compModel varchar2(64) constraint unique_comp unique, buyTime date, price number(12,2) ...
  • oracle 归档日志详解,包括允许模式,分类等。
  • shell脚本批量调度Oracle存储过程

    千次阅读 2019-05-10 18:57:41
    本程序批量调度Oracle存储过程,支持定时调度任务,处理存储过程调度过程中的依赖关系。 1. run_prc.sh #!/bin/bash #author zhangbingkai #2018.10.14 v_prc_call=$1 v_date=$2 shell_dir=$3 V_ORACLE_HOME=`...
  • 自己的见解 如果存储过程需要多次执行(重复被调用) 那么,一般会以 jobs的...间接地可以查询存储过程被调用的历史记录。 select * from user_scheduler_job_run_details; 还可以看到每个job 到底花费了多长时间
  • Oracle数据库里存放着各种各样的数据,其中有一些数据表会随着时间的推移,越来越大。如交友聊天的日志、 短信收发的日志、生产系统的日志、动态网站发布系统的日志等等。... 本文将介绍用存储过程定期分割表的方法。
  • Oracle数据库查看日志

    千次阅读 2021-04-30 08:27:45
    Automatic Diagnostic Repository (ADR),ADR 基目录中可以包含多个ADR 主目录,其中每个ADR 主目录都是一个根目录,用于存放特定Oracle 产品或组件的特定实例的全部诊断数据。另外,还生成了两个预警文件。一个是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,097
精华内容 54,038
关键字:

oracle 存储过程 日志怎么查询