包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读
一、使用方法
包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读取,写入,操作目录中的文件了。
二、步骤
1、创建目录对象和授权
SQL> CREATE DIRECTORY CZW AS 'D:\';
Directory created
SQL> GRANT READ,WRITE ON DIRECTORY CZW TO SCOTT;
Grant succeeded
2、定义
h_file utl_file.file_type
3、使用
h_file = utl_file.fopen('SQL_TMP','tmp_rollback_tables','a');
utl_file.put_line(h_file,"strr");
utl_file.fclose(h_file);
三、UTL_FILE包中函数说明
1、FILE_TYPE
该类型是UTL_FILE包中定义的记录类型,其成员是私有的,不能够被直接引用。该类型的定义如下:
TYPE file_type IS RECORD(
id BINARY_INTEGER,datatype BINARY_INTEGER
);
2、FOPEN
该函数用于打开文件。使用这个函数最多可以打开50个文件,语法如下:
UTL_FILE.FOPEN(
location IN VARCHAR2,
filename IN VARCHAR2,
open_mode IN VARCHAR2,
max_linesize IN BINARY_INTEGER
)
RETURN file_type;
当成功的执行了该函数之后,就会返回文件句柄,访问该文件可以使用该文件句柄。如果执行失败的话,则会触发例外或者显示错误。注意,当指定文件位置的时候,必须要使用DIRECTORY对象,并且其名称必须为大写。示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BEGIN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','R',1000);
DBMS_OUTPUT.PUT_LINE('D:\DYWT.TXT已经被打开');
END;
3、FOPEN_NCHAR
该函数用于以UNICODE方式打开文件。当使用该函数打开文件之后,读写文件会使用UNICODE取代数据库字符集。语法如下:
UTL_FILE.FOPEN_NCHAR(
location IN VARCHAR2,
filename IN VARCHAR2,
open_mode IN VARCHAR2,
max_linesize IN BINARY_INTEGER)
RETURN file_type;
4、IS_OPEN
该函数用于确定文件是否已经被打开,语法如下:
UTL_FILE.IS_OPEN(file IN FILE_TYPE) RETURN BOOLEAN;
如上所示,file用于指定文件句柄。如果文件已经被打开,则返回TRUE,否则则返回FALSE,该函数的示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','R',1000);
END IF;
DBMS_OUTPUT.PUT_LINE('D:\DYWT.TXT已经被打开');
END;
5、FCLOSE
该过程用于关闭已经打开的文件,语法如下:
UTL_FILE.FCLOSE(FILE IN OUT FILE_TYPE);
6、FCLOSE_ALL
该过程用于关闭当前打开的所有文件。语法如下:
UTL_FILE.FCLOSE_ALL;
7、GET_LINE
该过程用于从已经打开的文件中读取行内容,行内容会被读取到输出缓冲区。语法如下:
UTL_FILE.GET_LINE(
file IN FILE_TYPE,
buffer OUT VARCHAR2,
linesize IN NUMBER,
len IN PLS_INTEGER DEFAULT NULL
);
如上所示,buffer用于存储读取信息;linesize用于要指定读取的最大字节数;len用于指定实际读取的长度。使用该过程的示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(100);
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','R',1000);
END IF;
UTL_FILE.GET_LINE(HANDLE,BUFFER,100);
DBMS_OUTPUT.PUT_LINE(BUFFER);
UTL_FILE.fclose(HANDLE);
END;
8、GET_LINE_NCHAR
该过程的用法同上面的是一样的,只不过是用UNICODE方式读取已经打开的文件的行内容,并且将行内容读取到输出缓冲区中。
9、GET_RAW
该过程用于从文件中读取RAW字符串,并调节文件指针到读取位置。语法如下:
UTL_FILE.GET_RAW(
fid IN UTL_FILE.TYPE,
r OUT NOCOPY RAW,
len IN PLS_INTEGER DEFAULT NULL
);
上面所示:fid用于指定文件的句柄,r用于取得读取信息,示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','R',1000);
END IF;
UTL_FILE.GET_RAW(HANDLE,BUFFER,1000);
DBMS_OUTPUT.PUT_LINE(BUFFER);
UTL_FILE.fclose(HANDLE);
END;
10、PUT
该过程用于将缓冲区内容写入到文件中。当使用PUT过程的时候,文件必须以写方式打开,在写入缓冲区之后,如果要结束行,那么可以使用NEW_LINE过程。语法如下:
UTL_FILE.PUT(file IN FILE_TYPE,buffer IN VARCHAR2);
使用该过程的示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.IS_OPEN(HANDLE) THEN
HANDLE := UTL_FILE.FOPEN('CZW','NEW.TXT','W',1000);
END IF;
BUFFER:='&CONTENT1';
UTL_FILE.PUT(HANDLE,BUFFER);
UTL_FILE.NEW_LINE(HANDLE);
BUFFER:='&CONTENT2';
UTL_FILE.PUT(HANDLE,BUFFER);
UTL_FILE.NEW_LINE(HANDLE);
UTL_FILE.FCLOSE(HANDLE);
END;
11、PUT_NCHAR
作用同上,该过程用于将缓冲区的内容以UNICODE方式写入到文件。
12、PUT_RAW
该过程用于将RAW缓冲区中的数据写入文件中。语法如下:
UTL_FILE.PUT_RAW(
fid IN UTL_FILE.FILE_TYPE,
R IN RAW,
autoflush IN BOOLEAN DEFAULT FALSE
)
上述,fid用于指定文件句柄,r用于指定存放RAW数据的缓冲区,autoflush用于指定是否自动刷新缓冲区数据.该过程的示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.IS_OPEN(HANDLE) THEN
HANDLE := UTL_FILE.FOPEN('CZW','NEW.TXT','W',1000);
END IF;
BUFFER:='&CONTENT1';
UTL_FILE.PUT_RAW(HANDLE,BUFFER);
UTL_FILE.NEW_LINE(HANDLE);
UTL_FILE.FCLOSE(HANDLE);
END;
13、NEW_LINE
该过程用于为文件增加行终止符,语法如下:
UTL_FILE.NEW_LINE(file IN FILE_TYPE,lines IN NATURAL :=1);
后面的lines用于指定在文件中增加的行终止符的个数。
14、PUT_LINE
该过程用于将文本缓冲区内容写入到文件中。当使用该过程为文件追加内容时,会自动在文件的尾部追加行终止符。
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','W',1000);
END IF;
BUFFER := '&CONTENT';
UTL_FILE.put_line(HANDLE,BUFFER);
UTL_FILE.fclose(HANDLE);
END;
注意:会删掉之前的数据,是在新写入的行后面增加一个行结束符。
15、PUT_LINE_NCHAR
同上,该过程用于将文本缓冲区内容以UNICODE方式写入文件。当使用该过程写入内容的时候,会自动的在尾部追加行终止符。
2012/12/31 13:50经过测试,会清空原有文件中的内容。
16、PUTF
该过程用于以特定的格式将文本内容写入到文件中,其中%s标识字符串,,格式\n表示行终止符。语法如下:
UTL_FILE.PUTF(
file IN FILE_TYPE,
format IN VARCHAR2,
[arg1 IN VARCHAR2 DEFAULT NULL,
...
arg5 IN VARCHAR2 DEFAULT NULL]);
上述format用于指定格式符(最多支持5个%s),arg1...arg5用于指定对应于格式符的字符串。使用该过程的示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','W',1000);
END IF;
UTL_FILE.PUTF(HANDLE,'%s\n%s\n%s\n','&line1','&line2','&line3');
UTL_FILE.FCLOSE(HANDLE);
END;
17、PUTF_NCHAR
同上,该过程用于以特定的格式将文本内容以UNICODE方式写入到文件中。
18、FFLUSH
该过程用于将数据强制性写入到文件中,正常情况下,当给文件写入数据的时候,数据会被暂时的放到缓存中。过程FFLUSH用于强制将数据写入到文件中。语法如下:
UTL_FILE.FFLUSH(file IN FILE_TYPE):
19、FSEEK
该过程用于移动文件指针到特定的位置。当使用该过程移动文件指针的时候,既可以指定文件指针的绝对位置,也可以指定文件指针的相对位置,语法如下:
UTL_FILE.FSEEK(
fid IN utl_file.FILE_TYPE,
absolute_offset IN PL_INTEGER DEFALUT NULL,
relative_offset IN PL_INTEGER DEFALUT NULL);
如上所示,absolute_offset 用于指定文件的绝对位置,relative_offset 用于指定文件的相对位置(单位:字节),使用该过程的示例如下:
DECLARE
HANDLE UTL_FILE.FILE_TYPE;
BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','R',1000);
END IF;
DBMS_OUTPUT.PUT_LINE('起始位置'||'==>'||UTL_FILE.FGETPOS(HANDLE));
UTL_FILE.fseek(HANDLE,5);
DBMS_OUTPUT.PUT_LINE('现在位置'||'==>'||UTL_FILE.FGETPOS(HANDLE));
UTL_FILE.FCLOSE(HANDLE);
END;
20、FREMOVE
该过程用于删除磁盘文件。语法如下:
UTL_FILE.FREMOVE(location IN VARCHAR2,filename IN VARCHAR2);
上面的location用于指定DIRECTORY,注意,这里也必须要大写,filename用于指定要删除的文件名,示例如下:
SQL> EXEC UTL_FILE.FREMOVE('CZW','NEW.TXT');
PL/SQL procedure successfully completed
21、FCOPY
该过程用于将源文件的全部或者部分内容复制到目标文件中。当使用该过程的时候,如果不设起始行和结束行,则将复制文件所有的内容。语法如下:
UTL_FILE.FCOPY(
location IN VARCHAR2,
filename IN VARCHAR2,
dest_dir IN VARCHAR2,
dest_file IN VARCHAR2,
start_line IN PLS_INTEGER DEFAULT 1,
end_line IN PLS_INTEGER DEFALUT NULL);
上面location用于指定源文件所在的DIRECTORY对象,filename用于指定具体的文件名字,dest_dir指定希望复制到的文件的directory对象,dest_file用于指定目标文件的名称,start_line用于指定起始行号,end_line用于指定结束行号。
下面是UTL_FILE.FCOPY的例子:
SQL> exec UTL_FILE.FCOPY('CZW','DYWT.TXT','CZW','CZW.TXT');
PL/SQL procedure successfully completed
22、FRENAME
该过程用于修改已经存在的文件名字,其作用于UNIX的MV命令完全相同,在修改文件名字的时候,通过指定overwrite参数可以覆盖已经存在的文件。语法如下:
UTL_FILE.FRENAME(
location IN VARCHAR2,
filename IN VARCHAR2,
dest_dir IN VARCHAR2,
dest_file IN VARCHAR2,
overwrite IN BOOLEAN DEFAULT FALSE);
上面的,overwrite用于指定是否要覆盖已经存在的文件(false 不覆盖,true可以覆盖)例子如下:
SQL> exec UTL_FILE.FRENAME('CZW','CZW.TXT','CZW','HANJB.TXT')
PL/SQL procedure successfully completed

PrimeFactor−Innumbertheory,theprimefactorsofapositiveintegeraretheprimenumbersthatdividethatintegerexactly.Theprocessoffindingthesenumbersiscalledintegerfactorization,orprimefactorization.Example−Primefactorsof288are:288=2x2x2x2x2

2025年全球数字虚拟币交易平台竞争激烈,本文根据交易量、安全性、用户体验等指标,权威发布2025年全球十大数字虚拟币交易平台排行榜。OKX凭借强大的技术实力和全球化运营策略居首,Binance以高流动性和低费用紧随其后。Gate.io、Coinbase、Kraken等平台凭借各自优势稳居前列。榜单涵盖Huobi、KuCoin、Bitfinex、Crypto.com和Gemini等交易平台,各有特色,但投资需谨慎。选择平台需考虑安全性、流动性、费用、用户体验、币种选择及监管合规性等因素,理性投资

虚拟货币十大交易平台排行榜(2025年最新): 币安:全球龙头,高流动性,监管受关注。 OKX:庞大用户基数,支持多种币种,提供杠杆交易。 Gate.io:资深交易所,多种法币支付方式,提供多种交易对和投资产品。 Bitget:衍生品交易所,高流动性,低费用。 火币:老牌交易所,支持多种币种和交易对。 Coinbase:美国知名交易所,受监管严格。 Phemex等等。

十大数字货币交易平台:1. OKX,2. Binance,3. Gate.io,4. Huobi Global,5. Kraken,6. Coinbase,7. KuCoin,8. Bitfinex,9. Crypto.com,10. Gemini,这些交易所各具特色,用户可根据安全性、费用、币种选择、用户界面和客户支持等因素选择适合自己的平台。

本文推荐十个数字货币交易App:1. OKX;2. Binance;3. Gate.io;4. Huobi Global;5. Kraken;6. Coinbase;7. KuCoin;8. Crypto.com;9. Bitfinex;10. Poloniex。选择平台需考虑安全性、流动性、交易费用、币种选择、用户界面、客服支持及法规合规性等因素,谨慎评估风险,切勿盲目跟风。

靠谱的数字货币平台包括:1. OKX,2. Binance,3. Gate.io,4. Huobi Global,5. Kraken,6. Coinbase,7. KuCoin,8. Bitfinex,9. Crypto.com,10. Gemini,这些交易所各具特色,用户可根据安全性、费用、币种选择、用户界面和客户支持等因素选择适合自己的平台。

十大虚拟币交易平台排名依次为:1. OKX;2. Binance;3. Gate.io;4. Huobi Global;5. Kraken;6. Coinbase;7. KuCoin;8. Crypto.com;9. Bitfinex;10. Gemini。 排名基于平台流动性、币种选择、安全性、用户体验、手续费及合规性等因素综合考量,但仅供参考,投资需谨慎,风险自担。

随着数字货币市场的繁荣,本文列出了十大数字货币交易 App 排行榜,以帮助投资者选择可靠且易用的平台。排行榜包括币安、Coinbase、Gemini、Kraken、FTX、Huobi、OKX、Bitfinex、Crypto.com 和 Gate.io。这些 App 提供了广泛的交易对、安全可靠的平台、低交易费用和高流动性等优势。投资者应根据安全、用户友好性、交易费用、流动性、支持的币种和客户服务等因素,选择最符合他们需求的 App。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
