Oracle写函数读写日志实例

摘要:
1、用DBA登录赋权限createorreplacedirectoryD_OUTPUTas'D:TEMP';grantread,writeondirectoryD_OUTPUTtotestdb;GRANTEXECUTEONutl_fileTOtestdb;2、写一个函数创建目录并写入数据在数据清洗的存储过程中调用函数首先在上边声明变量xxvarchar2(1000);然后在执行插入失败的下面调用函

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写函数读写日志实例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇富文本-图文混排lombok 介绍及基本使用方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

boost的下载和安装(windows版)

1 Introduction boost是一个准C++标准库,相当于STL的延续和扩展。它的设计理念类似于STL,它使用泛型来最大化重用。对于2boost的下载和安装,我们可以在官方boost网站上下载最新的boost版本。因为boost库可以像标准库一样在多个平台上运行,所以它只以源代码的形式正式提供。这是因为boost windows的安装版本不仅与处理...

移动通信网络中的 GTP 协议

在EPSUP中使用GTP的优点之一是GTP具有固有的可识别隧道机制和GTP可以为UE提供的移动性。注意:GTPv2-U协议不存在。GTP-C协议GTP-C是GTP的控制平面,使用UDP端口2123。在EPS中,GTPv2-C协议负责创建、维护和删除S1、S5/S8和其他接口上的GTP-U隧道。它是一种基于IP的隧道协议,允许在GTP UProtocolEnt...

echarts折线图 鼠标移入改变小点显示样式

=undefined){res+=nameList[i].seriesName+':'+nameList[i].data+'%'+''}}res=res.split;returnres[0]+''+res[1];}}echarts折线图的鼠标移动上去小点显示样式修改tooltip:{trigger:'axis',formatter:function{varr...

Java SPI

在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下javaspi机制的思想。  2.jdbc    jdbc4.0以前,开发人员还需要基于Class.forName的方式来装载驱动,jdbc4也基于spi的机制来发现驱动提供商了,可以通过META-INF/services/java.sql.Driver文件里指定实现类的方...

myEclipse

因此,更改windows–>preferences–>general–>editors–>fileassociations,将myeclipsejspedator设置为默认的myeclipse使用提示步骤5:更改代码提示快捷键。当前代码提示快捷键默认为ctrl+space,我们的输入方法也被切换,因此会出现冲突。...

druid discard long time none received connection问题解析

Druid个人使用摘要:1.从服务器成功接收到的最后一个包有问题。我将jar包升级到1.2.2版本。放弃长时间无接收连接问题。在不更改程序的情况下设置timeBetweenEffectionRunsMillis参数。添加系统。程序Putdruid的getProperties()默认使用usePingMethod方法。此方法不更新连接返回时间,导致lastPa...