盒子
导航
文章目录
  1. 一、编译程序包
  2. 二、使用方法
  3. 三、Oracle Directories

用UTL_TCP实现FTP传输文件

项目上在开发完成报表之后需要将报表内容格式化一份成为CSV文件并传送到外围服务器,以进行与其他系统的连携,实现方式是在本地服务器上生成CSV文件,然后利用FTP传送至其他服务器。之前有个Java的并发程序来实现这个FTP上传的功能,但移植之后一直问题不断,从稳哥(藏章博客,文章)那里得知有个PL/SQL程序包封装了UTL_TCP来实现这个功能,使用之后发现非常方便快捷。程序包下载:CHX_FTP_UTL.pck

一、编译程序包

第一步很简单,就是将这个程序包编译到你的环境里。

二、使用方法

UTL_FTP程序包的使用很简单,下面列举了使用的方法顺序:

CHX_FTP_UTL.Login(); – 方法:登陆到FTP服务器;
CHX_FTP_UTL.List(); – 方法:列出服务器上的指定目录下的内容;
CHX_FTP_UTL.Get(); – 方法:从FTP服务器下载文件到本地;
CHX_FTP_UTL.Put(); – 方法:上传文件到服务器的指定目录下;

测试代码下载:Tester.sql

三、Oracle Directories

在Oracle Erp中目录是一种类似环境变量的东西,一般用在UTL_XXX程序包中比较多,例如UTL_TCP、UTL_FILE等等。举个例子,在使用UTL_FILE.Fcopy()函数时,变量中的目录路径那就不能写Dir目录字符串,而是要使用Directories的方式。Directories的方式就是指新建一个目录(Directory),这可以在Dba_Directories视图当中查询得到,而新建和删除Directories则类似新建和删除同义词、序列等等,如:

–//创建Directories FILE_PATH
Create or Replace Directory FILE_PATH
AS ‘/oracle/home/imchaser/tester’;

–//查询系统已有的Directories
Select * From Dba_Directories;

–//删除指定的Directories FILE_PATH
Drop Directory FILE_PATH;

其中删除操作需要system账户,apps账户默认是没有权限的。