Oracle写函数读写日志实例

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;

_____________________________________________________________________

时间: 2024-11-15 01:06:31

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

ORACLE函数之GREATEST函数详解实例

1           语法 GREATEST(expr_1, expr_2, ...expr_n) 2           说明 GREATEST(expr_1, expr_2, ...expr_n)函数从表达式(列.常量.计算值)expr_1, expr_2, ... expr_n等中找出最大的数返回.在比较时,OracIe会自动按表达式的数据类型进行比较,以expr_1的数据类型为准. 3    允许使用的位置 过程性语句和SQL语句. 4           示例 4.1        

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

这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下 --已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:dense_rank,rank ·查询原始数据:学号,姓名,科目名,成绩 select * from t_score S_ID S_NAME SUB_NAME SCORE 1 张三 语文 80.00 2 李四 数学 80.00 1 张三 数学 0.00 2 李四 语文 50.00 3 张三丰 语文 1

Oracle 11g 管理重做日志文件

重做日志也称联机重做日志.引入重做日志的目的是数据恢复.在数据库运行过程中,用户更改的数据会暂时存放在数据库的高速缓冲区中.为了提高写数据的速度,并不是一旦有数据变化,就把变化的数据写到数据文件中.频繁的读写磁盘文件会使数据库系统效率降低,所以要等到数据库高速缓冲区中的数据达到一定的量或者满足一定的条件时,DBWR进程才会将变化了的数据写到数据文件中.这种情况下如果在DBWR把变化了的更改写到数据文件之前发生了宕机,那么数据高速缓冲区中的数据就会全部丢失.如果在数据库重新启动后无法恢复这部分用户

java IO流文件的读写具体实例(转载)

引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能找到,但自己总感觉不是很踏实,所以今天就抽空看了看java IO流的一些操作,感觉还是很有收获的,顺便总结些资料,方便以后进一步的学习... IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流

Oracle 控制文件和日志文件

管理控制文件 在Oracle数据库中,控制文件是一个很小(大小一般在10MB范围内)的二进制文件,含有数据库的结构信息,包括数据文件和日志文件的信息.可以将控制文件理解为物理数据库的一个元数据存储库.控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能够安全地更新控制文件的内容,所以,任何时候都不要试图手动编辑控制文件. 由于控制文件在数据库中的重要地位,所以保护控制文件的安全非常重要,为此Oracl

Oracle自定义函数1

用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样,如max(value)函数,其中,value被称为参数.函数参数有3种类型. IN 参数类型:表示输入给函数的参数. OUT 参数类型:表示参数在函数中被赋值,可以传给函数调用程序. IN OUT参数类型:表示参数既可以传值也可以被赋值. 1.语法格式: SQL语法方式创建的语法格式为: CREATE OR REPLACE FUNCTION function_name         /*函数名称*/(Para

[转]Oracle DB 查看预警日志

"Database(数据库)"主页>"Related Links相关链接)"区域> "Alert Log Content (预警日志内容)" 查看预警日志 每个数据库都有一个alert_<sid >.log文件.此文件位于数据库所在的服务器中,如果设置了$ORACLE_BASE,则此文件默认存储在$ORACLE_BASE/diag/rdbms/<db_name>/<SID>/trace中. 数据库预

数据库编程2 Oracle 过滤 函数 分组 外连接 自连接

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 续:数据库编程1 Oracle 过滤 函数 分组 外连接 自连接 where like模糊查询,查询员工姓名是4个字母 SQL> select * from emp where ename like '____';      EMPNO ENAME                JOB                       MGR HIREDATE          SAL       COMM    

Reading and Writing Logs——读写日志

Android日志系统提供了收集和查看系统调试输出的机制.Logcat转储了系统消息的日志,包括当模拟器抛出一个错误时的堆栈信息和你在应用中使用Log类写的信息.你可以通过ADB或在DDMS中运行LogCat,它允许你实时阅读信息. Log类 Log是一个日志记录类,可以在代码中使用来打印信息到LogCat.常用的记录方法包括: v(String, String) (verbose) d(String, String) (debug) i(String, String) (information