oracle utl_file包的使用
来源:互联网 发布:java等级划分英语缩写 编辑:程序博客网 时间:2024/05/18 01:54
I.设置路径utl_file_dir
第一步:以管理员用户登陆
如:conn sys/password@sid as sysdba
第二步:设置可操作目录
需要指定utl_file包可以操作的目录。在oracle 10g以前,可以用以下方法:
1、alter system set utl_file_dir='e:/utl' scope=spfile;
2、在init.ora文件中,配置如下:
UTL_FILE=E:/utl或者UTL_FILE_DIR=E:/utl
在oracle 10g中建议用以下方法配置:CREATE DIRECTORY utl AS 'E:/utl';
第三步:授权给指定用户,以便执行utl_file
GRANT EXECUTE ON utl_file TO scott;
第四步:conn scott/tiger
就可以正常使用utl_file了。
II.包说明
1.方法说明
2.步骤:
1)声明一个文件句柄变量,以便调用utl_file例程时使用它标识文件。可以使用utl_file.file_type类型声明文件句柄变量。
2)声明一个varchar2类型的字符串,作为一次读取文件中一行的缓冲区。
3)调用utl_file.fopen打开文件或者采用utl_file.fopen_nchar以unicode方式打开文件。打开文件时需要指定是读还是写文件,不能够既读又写文件。
4)如果读取文件,则调用utl_file.get_line或者get_line_nchar过程;如果是写文件则调用utl_file.put_line或者put_line_nchar过程。
5)完成操作后,调用utl_file.fclose关闭文件。
3.可能产生的异常
4.部分方法说明
a.fopen
function fopen(location in varchar2,
filename in varchar2,
open_mode in varchar2,
max_linesize in binary_integer) return file_type;
要打开的文件目录路径必须存在,否则fopen不会自动创建。
location:文件目录的路径。如果该目录与可访问目录表中的目录不匹配,则引发异常utl_file.invalid_path
filename:文件名.
open_mode:'r'读文本,‘W’写文本,‘A’追加文本,大小写不敏感。 当为A时如果文件不存在,则按W方式创建新文件。
max_linesize:文件的最大行数,1-32767,如果没有该参数,则为1024,如果值不在1-32767之间,引发utl_file.invalid_maxlinesize异常
返回值:返回值为utl_file.file_type类型。后续函数使用的文件句柄。
b.putf
putf(file_handle in file_type,
format invarchar2,
arg1 in varchar2 default null,arg2 in varchar2 default null,....)
可以格式化文本format.
如:
utl_file.putf(v_file,'Hi there!/nMy name is %s,and I am a %s major./n','Scott','Comput');
/n:换行符,%s用后面参数一一对应来替换
c.fflush
fflush(file_handle in file_type);
一般向文件传输数据时通常是存储在缓冲区中的,当该缓冲区满后,才被送往输出文件,fflush强行把缓冲区中的字段立即定稿指定文件,只把以new_line字符结尾的行写入文件中,put操作的字符都将在缓冲区保留。
5.例子
CREATE OR REPLACE PROCEDURE p_utl_file(p_str VARCHAR2 DEFAULT NULL) AS
/*
*/
--定义文件句柄
v_file utl_file.file_type;
BEGIN
--打开文件
v_file:=utl_file.fopen('e:/test/utl','testutl.txt','a',32767);
--将内容写入文件
utl_file.put(v_file,p_str);
utl_file.new_line(v_file,1);
--缓存未满,上面内容未写入文件,单步调用时可以看到这点
--fflush强制将new_line结束的内容写入文件
utl_file.fflush(v_file);
--文件中已经有上一步的内容
utl_file.put_line(v_file,p_str||'1');
utl_file.fclose(v_file);
EXCEPTION
WHEN OTHERS THEN
NULL;
END p_utl_file;
- oracle utl_file包的使用
- oracle utl_file包的使用
- oracle中utl_file包的使用
- ORACLE的utl_file包
- ORACLE的UTL_FILE包
- ORACLE的UTL_FILE包
- ORACLE的UTL_FILE包
- utl_file包的使用
- Oracle UTL_FILE的使用
- Oracle的UTL_FILE使用
- 使用oracle的utl_file包将数据导入到文本
- oracle UTL_FILE的一些使用
- Oracle中UTL_FILE包的用法
- Oracle中UTL_FILE包的用法
- PL/SQL-->UTL_FILE包的使用介绍
- utl_file包使用浅析
- utl_file包的应用
- utl_file包的应用
- ShellExecute, WinExec, CreateProcess
- 接口 vs 抽象类
- CoInitialize与CoInitializeEx,AfxOleInit()的不同 控制台程序中AfxOleInit失效原因
- Flex 网站大全【持续更新】
- 实现wince datagrid 上下滑屏数据浏览
- oracle utl_file包的使用
- CentOS 5使用windows分区
- VFP实现网络校时
- Linux Ubuntu服务器版操作系统介绍及下载
- 业务需求驱动的软件质量管理系统 Rational Quality Manager
- RHEL CentOS Debian Ubuntu SuSE简介
- ubuntu8.10下安装VMware-Player-2.5.2-156735.i386.rpm
- 为cxGrid增加行号(http://blog.csdn.net/estudy2008/archive/2007/08/09/1733546.aspx)
- 构造方法