• _创建日志_


    
    
    1、用DBA登录赋权限
    create or replace directory D_OUTPUT as 'D:TEMP';   
    grant read,write on directory D_OUTPUT to testdb;   
    GRANT EXECUTE ON utl_file TO testdb;
    2、写一个函数创建目录并写入数据
    create or replace function cux_my(code  VARCHAR2)
      RETURN VARCHAR2 is
    
    filehandle utl_file.file_type; --句柄
     a varchar2(100);
    
    begin
      a:=TO_CHAR(SYSDATE(),'YYMMDDHH24MISS');
    filehandle := utl_file.fopen('UTL_FILE_DIR',a || '.txt','a'); --打开文件
    utl_file.put_line(filehandle,code );--写入一行记录
    --dbms_output.put_line('1');
    utl_file.fclose(filehandle);--关闭句柄
    
      return 'OK';
    end;
    3、在数据清洗的存储过程中调用函数
    首先在上边声明变量
     xx varchar2(1000);
    然后在执行插入失败的下面调用函数
      else
          --insert into fail_log(XH,proc_mc,title,content,log_type,log_time) values(FAIL_LOG_SEQ.NEXTVAL,'pro_TXZ_ROAD_PLAN','数据插入失败',c_YAID_t,'ERROR',sysdate);
          dbms_output.put_line('通行证预案表YAID为' || c_YAID_t || '的数据已经存在');
          xx :=cux_my(TO_CHAR(SYSDATE(),'YYYY-MM-DD HH24:MI:SS')||'===>' || '通行证预案表YAID为' || c_YAID_t || '的数据插入失败');
    4、
    
    
    
    ______________________________创建日志_______________________________________
    
    -- name 表名称    code  传入数据、失败数据
    
    --存储过程失败情况调用  命名修改有点意义 
    
    create or replace function cux_my(name  VARCHAR2,code  VARCHAR2)
      RETURN VARCHAR2 is
    
    filehandle utl_file.file_type; --句柄
     a varchar2(100); 
    
    begin
      a:=TO_CHAR(SYSDATE(),'YYMMDDHH24MISS');  -- 时间格式
    filehandle := utl_file.fopen('UTL_FILE_DIR',name||a || '.txt','a'); --打开文件
    utl_file.put_line(filehandle,code );--写入一行记录
    --dbms_output.put_line('1');
    utl_file.fclose(filehandle);--关闭句柄
    
      return 'OK';
    end;
    
    
    _____________________________________________________________________
    
    
    
    ______________________________读取日志_______________________________________
    
    
    1:-- 当建表方法 需要用这个  读取日志文件 根据 文件名称
    
    -- 此时的filename 是 java 代码调用函数 哟啊传入的文件名称,此名称命名方式 一定 一定 要和创
    
    建日志 规范一直
    
    
    create or replace function shuchu(filename  VARCHAR2)
      RETURN VARCHAR2 is
    
      filehandle utl_file.file_type;
      filebuffer varchar(200);
       BEGIN
         filehandle := utl_file.fopen('UTL_FILE_DIR',filename || '.txt','r');
        loop
          begin
               utl_file.get_line(filehandle,filebuffer);
            --   insert   into  t values('',filename,filebuffer,filebuffer);   向新建的表中 插
    
    入读取的日志数据
               dbms_output.put_line(filebuffer); 
               EXCEPTION
                 WHEN no_data_found THEN
                 exit ;
           End;
          END LOOP; 
        utl_file.fclose(filehandle);
    COMMIT;
     return 'OK';  --此时 返回可以任意
    END;
    
    
    
    2,-- 当不需要建表的时候
    
    -- 此时的filename 是 java 代码调用函数 哟啊传入的文件名称,此名称命名方式 一定 一定 要和创
    
    建日志 规范一直
    
    
    create or replace function shuchu(filename  VARCHAR2)
      RETURN VARCHAR2 is
    
      filehandle utl_file.file_type;
      filebuffer varchar(200);
       BEGIN
         filehandle := utl_file.fopen('UTL_FILE_DIR', '160508235600.txt','r');
        loop
          begin
               utl_file.get_line(filehandle,filebuffer);
           
               dbms_output.put_line(filebuffer); 
               EXCEPTION
                 WHEN no_data_found THEN
                 exit ;
           End;
          END LOOP; 
        utl_file.fclose(filehandle);
    COMMIT;
     return filebuffer;  --此时 返回值 是读取的日志数据
    END;
    
    
     
    
    
    
    
    _____________________________________________________________________



    java 调用函数:http://www.cnblogs.com/xwdreamer/archive/2011/10/25/2296947.html
  • 相关阅读:
    Maven介绍
    自考:计算机网络原理 2018版 李全龙 课后习题答案
    jmeter分布式部署遇到的坑
    mysql循环 insert插入多条数据
    认识Nacos.
    mysql中where子句中使用别名查询出现问题
    python之bytes和string相互转换
    什么叫线圈?什么寄存器?什么叫保持寄存器?
    Modbus-RTU详解(转载)
    python进制之间的转换函数
  • 原文地址:https://www.cnblogs.com/mengyuxin/p/5472439.html
Copyright © 2020-2023  润新知