oracle存储过程读写文件操作Word版

上传人:公**** 文档编号:474306272 上传时间:2023-04-15 格式:DOC 页数:12 大小:40.50KB
返回 下载 相关 举报
oracle存储过程读写文件操作Word版_第1页
第1页 / 共12页
oracle存储过程读写文件操作Word版_第2页
第2页 / 共12页
oracle存储过程读写文件操作Word版_第3页
第3页 / 共12页
oracle存储过程读写文件操作Word版_第4页
第4页 / 共12页
oracle存储过程读写文件操作Word版_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《oracle存储过程读写文件操作Word版》由会员分享,可在线阅读,更多相关《oracle存储过程读写文件操作Word版(12页珍藏版)》请在金锄头文库上搜索。

1、传播优秀Word版文档 ,希望对您有帮助,可双击去除!racle提供的文件操作包UTL_FILE包中的UTL_FILE.FOPEN负责打开一个文件。utl_file.fopen(location in varchar2, filename in varchar2, open_mode in varchar2) return FILE_TYPE;Location 是路径参数,FILENAME 是文件名,OPEN_MODE是打开模式,R是读文本,W是写文本,A是附加文本,参数不分大小写,如果指定A但是文件不存在,它会用W先创建出来,W有覆盖的功能;其中的location并不能简单的指定为D:/te

2、mp等路径,要建立一个DIRECTORY变量并付给权限(必须以DBA身份登录):Sql代码1. Create or replacedirectoryD_OUTPUTasD:/TEMP;2. grantread,writeondirectoryD_OUTPUTtotestdb;3. GRANTEXECUTEONutl_fileTOtestdb;sqlview plaincopy1. createorreplacedirectoryD_OUTPUTasD:/TEMP;2. grantread,writeondirectoryD_OUTPUTtotestdb;3. GRANTEXECUTEONutl

3、_fileTOtestdb;之后就可以用UTL_FILE包建立文件了Sql代码1. V_FILEUTL_FILE.FILE_TYPE;2. V_FILE:=UTL_FILE.FOPEN(D_OUTPUT,Data.txt,w);sqlview plaincopy1. V_FILEUTL_FILE.FILE_TYPE;2. V_FILE:=UTL_FILE.FOPEN(D_OUTPUT,Data.txt,w);就可以在数据库服务器的D:/TEMP建立Data.txt最近用到了Oracle的包UTL_FILE,网上却没找到关于它的函数,过程使用说明,虽然都不是很难的东西,但简单列出来,也能提高些效

4、率。FOPENIS_OPENGET_LINEPUT传播优秀Word版文档 ,希望对您有帮助,可双击去除!NEW_LINEPUT_LINEPUTFFFLUSHFCLOSEFCLOSE_ALLUTL_FILE.FOPEN用法FOPEN会打开指定文件并返回一个文件句柄用于操作文件。所有PL/SQL版本:Oracle 8.0版及以上:FUNCTION UTL_FILE.FOPEN (FUNCTION UTL_FILE.FOPEN ( location IN VARCHAR2, location IN VARCHAR2, filename IN VARCHAR2, filename IN VARCHAR

5、2, open_mode IN VARCHAR2) open_mode IN VARCHAR2,RETURN file_type; max_linesize IN BINARY_INTEGER) RETURN file_type;参数location文件地址filename文件名openmode打开文件的模式(参见下面说明)max_linesize文件每行最大的字符数,包括换行符。最小为1,最大为327673种文件打开模式:R 只读模式。一般配合UTL_FILE的GET_LINE来读文件。W 写(替换)模式。文件的所有行会被删除。PUT, PUT_LINE, NEW_LINE, PUTF和FF

6、LUSH都可使用A 写(附加)模式。原文件的所有行会被保留。在最末尾行附加新行。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用传播优秀Word版文档 ,希望对您有帮助,可双击去除!打开文件时注意以下几点:文件路径和文件名合起来必须表示操作系统中一个合法的文件。文件路径必须存在并可访问;FOPEN并不会新建一个文件夹。如果你想打开文件进行读操作,文件必须存在;如果你想打开文件进行写操作,文件不存在时,会新建一个文件。如果你想打开文件进行附加操作,文件必须存在。A模式不同于W模式。文件不存在时,会抛出INVALID_OPERATION异常。FOPEN 会抛出以下异

7、常UTL_FILE.INVALID_MODEUTL_FILE.INVALID_OPERATIONUTL_FILE.INVALID_PATHUTL_FILE.INVALID_MAXLINESIZEUTL_FILE.IS_OPEN用法如果文件句柄指定的文件已打开,返回TRUE,否则FALSEFUNCTION UTL_FILE.IS_OPEN (file IN UTL_FILE.FILE_TYPE) RETURN BOOLEAN;UTL_FILE只提供一个方法去读取数据:GET_LINEUTL_FILE.GET_LINE用法读取指定文件的一行到提供的缓存。PROCEDURE UTL_FILE.GET

8、_LINE (file IN UTL_FILE.FILE_TYPE, buffer OUT VARCHAR2);file由FOPEN返回的文件句柄buffer读取的一行数据的存放缓存buffer必须足够大。否则,会抛出VALUE_ERROR 异常。行终止符不会被传进buffer。异常NO_DATA_FOUNDVALUE_ERRORUTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.READ_ERROR传播优秀Word版文档 ,希望对您有帮助,可双击去除!UTL_FILE.PUT用法在当前行输出数据PROCEDURE UTL

9、_FILE.PUT (file IN UTL_FILE.FILE_TYPE, buffer OUT VARCHAR2);file由FOPEN返回的文件句柄buffer包含要写入文件的数据缓存;Oracle8.0.3及以上最大允许32kB,早期版本只有1023BUTL_FILE.PUT输出数据时不会附加行终止符。UTL_FILE.PUT会产生以下异常UTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.WRITE_ERRORUTL_FILE.NEW_LINE在当前位置输出新行或行终止符,必须使用NEW_LINE来结束当前行,或

10、者使用PUT_LINE输出带有行终止符的完整行数据。PROCEDURE UTL_FILE.NEW_LINE (file IN UTL_FILE.FILE_TYPE, lines IN NATURAL := 1);file由FOPEN返回的文件句柄lines要插入的行数如果不指定lines参数,NEW_LINE会使用默认值1,在当前行尾换行。如果要插入一个空白行,可以使用以下语句:UTL_FILE.NEW_LINE (my_file, 2);如果lines参数为0或负数,什么都不会写入文件。NEW_LINE会产生以下异常VALUE_ERRORUTL_FILE.INVALID_FILEHANDLE

11、UTL_FILE.INVALID_OPERATIONUTL_FILE.WRITE_ERROR例子如果要在UTL_FILE.PUT后立刻换行,可以如下例所示:PROCEDURE add_line (file_in IN UTL_FILE.FILE_TYPE, line_in IN VARCHAR2)ISBEGIN UTL_FILE.PUT (file_in, line_in); UTL_FILE.NEW_LINE (file_in);END;传播优秀Word版文档 ,希望对您有帮助,可双击去除!UTL_FILE.PUT_LINE输出一个字符串以及一个与系统有关的行终止符PROCEDURE UTL

12、_FILE.PUT_LINE (file IN UTL_FILE.FILE_TYPE, buffer IN VARCHAR2);file由FOPEN返回的文件句柄buffer包含要写入文件的数据缓存;Oracle8.0.3及以上最大允许32kB,早期版本只有1023B在调用UTL_FILE.PUT_LINE前,必须先打开文件。UTL_FILE.PUT_LINE会产生以下异常UTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.WRITE_ERROR例子这里利用UTL_FILE.PUT_LINE从表emp读取数据到文件:PRO

13、CEDURE emp2fileIS fileID UTL_FILE.FILE_TYPE;BEGIN fileID := UTL_FILE.FOPEN (/tmp, emp.dat, W); /* Quick and dirty construction here! */ FOR emprec IN (SELECT * FROM emp) LOOP UTL_FILE.PUT_LINE (TO_CHAR (emprec.empno) | , | emprec.ename | , | . TO_CHAR (emprec.deptno); END LOOP; UTL_FILE.FCLOSE (file

14、ID);END;PUT_LINE相当于PUT后加上NEW_LINE;也相当于PUTF的格式串%s/n。传播优秀Word版文档 ,希望对您有帮助,可双击去除!UTL_FILE.PUTF以一个模版样式输出至多5个字符串,类似C中的printfPROCEDURE UTL_FILE.PUTF (file IN FILE_TYPE ,format IN VARCHAR2 ,arg1 IN VARCHAR2 DEFAULT NULL ,arg2 IN VARCHAR2 DEFAULT NULL ,arg3 IN VARCHAR2 DEFAULT NULL ,arg4 IN VARCHAR2 DEFAULT NULL ,arg5 IN VARCHAR2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号