技术开发 频道

在ORACLE里调用JAVA程序解决 utl_file 错误



    再上网请教,等了近一个下午,也没见有人解答,大家很郁闷,我也很着急,眼看就要成功了,却迈不过最后这关键的一步! 过了一会,静下心想,在ORACLE里调用JAVA程序是个新技术,本来懂得应用的人就不多,再加上可能是这个问题太具体了,不代表广泛的应用,意义不大,别人也不愿意花精力去研究;而自己对该应用也是新手,急切之间,也没法解决!!!再思考吧!

    不知什么时候,恍惚间,突然醒悟,为什么得用程序去删除回车符呢,问题源头在于UTL_FILE输出后自带了回车换行符;既然JAVA可以删除文件的字符,当然也可以输出数据,生成文件;这样,不用该包,改用JAVA程序来输出,不就可以避开该BUG了吗!再仔细想想,数据筛选过滤完后,可以事先保存到一临时表中,待此作完成后,用JAVA程序读取输出,生成指定的文件。想到这里,我立即和同事说了该想法,同事了解后立即表示,这很简单!

    真是苦尽甘来,之后事情进展很顺利:同事很快改写了程序,测试后,果然一切OK。转发给客户,和他说明,为克服该BUG,采用JAVA方法输出的方法,多建了个临时表。客户检查后,表示认可。至此,问题在客户反馈的第4个工作日后完全解决!

    回顾这次解决问题的经历:用JAVA实现该功能,很简单。问题的关键在于:如何思考到,采用该方法,绕开UTL_FILE包产生的”BUG”,来解决输出问题。看似简单的思路,其实每往前走一步,都是在上一步骤失败后苦苦思考的结果。用爱迪生的话说,天才就是99%的汗水加1%的灵感也不为过!很庆幸自己在“紧张”时刻,能够获得这份灵感,由原来动态连接库,思考到改用JAVA方法,再改思路,跳出了固定思维:用UTL_FILE包来输出数据的局限,改用JAVA程序输出,最终成功。由于思考过程辛苦,思路连连转下,给我留下了深刻的影响,所以事情即使过了几年,我依旧清晰记得当时这个冥思苦想,以及苦尽甘来的结果。

0
相关文章