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、写一个函数创建目录并写入数据
在数据清洗的存储过程中调用函数
首先在上边声明变量
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 || '的数据插入

失败');
______________________________创建日志_______________________________________

-- 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('D_OUTPUT',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('D_OUTPUT',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('D_OUTPUT', '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;

_____________________________________________________________________

Oracle写函数读写日志实例的更多相关文章

  1. 【转】Oracle 自定义函数语法与实例

    原文地址:https://blog.csdn.net/libertine1993/article/details/47264211 Oracle自定义函数的语法如下: create or replac ...

  2. ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题

    生产库监听日志文件太大(达到4G多),发现oracle停止写监听日志,检查参数log_file,log_directory,log_status 均正常,数据库运行也正常. 经确认确实为监听日志过大引 ...

  3. Oracle排名函数(Rank)实例详解

    这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下     --已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应 ...

  4. 创建多个Oracle数据库及相应的实例

    转 http://blog.csdn.net/luiseradl/article/details/6972217 对于使用过SQL Server数据库的用户可以会对Oracle中的数据库的实例的概念理 ...

  5. Oracle自定义函数和存储过程示例,自定义函数与存储过程区别

    参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...

  6. oracle数据库的导入 导出实例

    oracle数据库的导入 导出实例 分类: DataBase2011-09-07 23:25 377人阅读 评论(0) 收藏 举报 数据库oraclefileusercmdservice 我要从另外一 ...

  7. VC 使用msxml6.dll动态链接库中的函数读写XML文件

    VC 使用msxml6.dll动态链接库中的函数读写XML文件 目录 1 引言 2 .dll使用方法 3 常用函数总结 4 实例应用 5 运行效果预览 6 补充说明 7 不足之处 8 更新   引言: ...

  8. flask实战-个人博客-使用工厂函数创建程序实例 --

    使用工厂函数创建程序实例 使用蓝本还有一个重要的好处,那就是允许使用工厂函数来创建程序实例.在OOP(Object-Oriented Programming,面向对象编程)中,工厂(factory)是 ...

  9. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

随机推荐

  1. Codeforces 13C Sequence --DP+离散化

    题意:给出一个 n (1 <= n <= 5000)个数的序列 .每个操作可以把 n 个数中的某一个加1 或 减 1.问使这个序列变成非递减的操作数最少是多少 解法:定义dp[i][j]为 ...

  2. 分层开发(MySchool总结)

    由于分层之间存在各层之间的关系窗体之间的方法跳转,故有需要者可以进行下载本地文件 MySchool.rar 3304KB 5/22/2016 9:43:28 AM ,代码中有注释, 上述代码,属个人所 ...

  3. Android Studio系列教程二--基本设置与运行

    Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...

  4. apply,call,bind的区别

    apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. Jav ...

  5. React Native iOS环境搭建

    前段时间React Native for Android发布,感觉React Native会越来越多的公司开始研究.使用.所以周六也抽空搭建了iOS的开发环境,以便以后利用空闲的时间能够学习一下. 废 ...

  6. 什么是json

    http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html http://edu.51cto.com/lesson/id-71123 ...

  7. Java Concurrency in Practice 读书笔记 第二章

    第二章的思维导图(代码迟点补上):

  8. Quartz.net打造信息抽取器

    由于最近的一个项目需要定时抽取特定XML信息,然后保存到数据库,最后通过WebApi把手机端要使用的方法给暴露出来,所以去研究了一下Quartz.net.由于项目很小,我没用到Autofac,Repo ...

  9. Android屏蔽返回键

    @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK) ...

  10. java.util.ConcurrentModificationException 解决办法

    在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除. 则使用会报以下异常:Java.util.ConcurrentModific ...