




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、racle提供的文件操作包UTL_FILE包中的UTL_FILE.FOPEN負(fù)責(zé)打開一個(gè)文件。 utl_file.fopen(location in varchar2, filename in varchar2, open_mode in varchar2) return FILE_TYPE; Location 是路徑參數(shù), FILENAME 是文件名, OPEN_MODE是打開模式,'R'是讀文本,'W'是寫文本,'A'是附加文本,參數(shù)不分大小寫,如果指定'A'但是文件不存在,它會(huì)用
2、9;W'先創(chuàng)建出來,'W'有覆蓋的功能; 其中的location并不能簡(jiǎn)單的指定為'D:/temp'等路徑,要建立一個(gè)DIRECTORY變量并付給權(quán)限(必須以DBA身份登錄): Sql代碼1. Create or replace directory D_OUTPUT as 'D:/TEMP' 2. grant read ,write on directory&
3、#160;D_OUTPUT to testdb; 3. GRANT EXECUTE ON utl_file TO testdb; sql view plaincopy1. create or replace directory D_OUTPUT as 'D:/TEMP'
4、;2. grant read,write on directory D_OUTPUT to testdb; 3. GRANT EXECUTE ON utl_file TO testdb; 之后就可以用UTL_FILE包建立文件了Sql代碼1. V_FILE UTL_FILE.FILE_TYPE; 2. V_FILE := UTL_FILE.FOPEN('D_OUTPUT'
5、160;, 'Data.txt' , 'w' ); sql view plaincopy1. V_FILE UTL_FILE.FILE_TYPE; 2. V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'Data.txt', 'w'); 就可以在數(shù)據(jù)庫服務(wù)器的D:/TEMP建立Data.txt
6、;最近用到了Oracle的包UTL_FILE,網(wǎng)上卻沒找到關(guān)于它的函數(shù),過程使用說明,雖然都不是很難的東西,但簡(jiǎn)單列出來,也能提高些效率。FOPEN IS_OPEN GET_LINE PUT NEW_LINE PUT_LINE PUTF FFLUSH FCLOSE FCLOSE_ALL UTL_FILE.FOPEN 用法FOPEN會(huì)打開指定文件并返回一個(gè)文件句柄用于操作文件。所有PL/SQL版本: Ora
7、cle 8.0版及以上: FUNCTION UTL_FILE.FOPEN ( FUNCTION UTL_FILE.FOPEN ( location IN VARCHAR2, location IN VARCHAR2, filename IN VARCHAR2,
8、0; filename IN VARCHAR2, open_mode IN VARCHAR2) open_mode IN VARCHAR2, RETURN file_type;
9、60; max_linesize IN BINARY_INTEGER) RETURN file_type;參數(shù) location 文件地址 filename 文件名 openmo
10、de 打開文件的模式(參見下面說明) max_linesize文件每行最大的字符數(shù),包括換行符。最小為1,最大為32767 3種文件打開模式:R 只讀模式。一般配合UTL_FILE的GET_LINE來讀文件。W 寫(替換)模式。文件的所有行會(huì)被刪除。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用A 寫(附加)模式。原文件的所有行會(huì)被保留。在最末尾行附加新行。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用打開文件時(shí)注意以下幾點(diǎn):文件路徑和文件名合起來必須表示操作系統(tǒng)中一個(gè)合法的文件。文件路徑必須存在
11、并可訪問;FOPEN并不會(huì)新建一個(gè)文件夾。如果你想打開文件進(jìn)行讀操作,文件必須存在;如果你想打開文件進(jìn)行寫操作,文件不存在時(shí),會(huì)新建一個(gè)文件。如果你想打開文件進(jìn)行附加操作,文件必須存在。A模式不同于W模式。文件不存在時(shí),會(huì)拋出INVALID_OPERATION異常。FOPEN 會(huì)拋出以下異常UTL_FILE.INVALID_MODEUTL_FILE.INVALID_OPERATIONUTL_FILE.INVALID_PATHUTL_FILE.INVALID_MAXLINESIZEUTL_FILE.IS_OPEN 用法如果文件句柄指定的文件已打開,返回TRUE,否則FALSEFUNCT
12、ION UTL_FILE.IS_OPEN (file IN UTL_FILE.FILE_TYPE) RETURN BOOLEAN;UTL_FILE只提供一個(gè)方法去讀取數(shù)據(jù):GET_LINEUTL_FILE.GET_LINE 用法讀取指定文件的一行到提供的緩存。PROCEDURE UTL_FILE.GET_LINE (file IN UTL_FILE.FILE_TYPE, buffer OUT VARCHAR2);file由FOPEN返回的文件句柄 buffer 讀取的一行數(shù)據(jù)的存放
13、緩存buffer必須足夠大。否則,會(huì)拋出VALUE_ERROR 異常。行終止符不會(huì)被傳進(jìn)buffer。異常NO_DATA_FOUND VALUE_ERROR UTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.READ_ERRORUTL_FILE.PUT 用法在當(dāng)前行輸出數(shù)據(jù)PROCEDURE UTL_FILE.PUT (file IN UTL_FILE.FILE_TYPE, buffer OUT
14、VARCHAR2);file由FOPEN返回的文件句柄buffer包含要寫入文件的數(shù)據(jù)緩存;Oracle8.0.3及以上最大允許32kB,早期版本只有1023BUTL_FILE.PUT輸出數(shù)據(jù)時(shí)不會(huì)附加行終止符。UTL_FILE.PUT會(huì)產(chǎn)生以下異常UTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.WRITE_ERRORUTL_FILE.NEW_LINE在當(dāng)前位置輸出新行或行終止符,必須使用NEW_LINE來結(jié)束當(dāng)前行,或者使用PUT_LINE輸出帶有行終止符的完整行數(shù)據(jù)。PROCEDURE UTL_FILE.NEW_L
15、INE (file IN UTL_FILE.FILE_TYPE, lines IN NATURAL := 1); file由FOPEN返回的文件句柄lines要插入的行數(shù)如果不指定lines參數(shù),NEW_LINE會(huì)使用默認(rèn)值1,在當(dāng)前行尾換行。如果要插入一個(gè)空白行,可以使用以下語句:UTL_FILE.NEW_LINE (my_file, 2);如果lines參數(shù)為0或負(fù)數(shù),什么都不會(huì)寫入文件。NEW_LINE會(huì)產(chǎn)生以下異常VALUE_ERRORUTL_FILE.INVALID_FILEHANDLEUT
16、L_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;UTL_FILE.PUT_LINE 輸出一個(gè)字符串以及一個(gè)與系統(tǒng)有關(guān)的行終止符PROCEDURE UT
17、L_FILE.PUT_LINE (file IN UTL_FILE.FILE_TYPE, buffer IN VARCHAR2);file由FOPEN返回的文件句柄buffer包含要寫入文件的數(shù)據(jù)緩存;Oracle8.0.3及以上最大允許32kB,早期版本只有1023B在調(diào)用UTL_FILE.PUT_LINE前,必須先打開文件。UTL_FILE.PUT_LINE會(huì)產(chǎn)生以下異常UTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.W
18、RITE_ERROR例子這里利用UTL_FILE.PUT_LINE從表emp讀取數(shù)據(jù)到文件:PROCEDURE emp2file IS fileID UTL_FILE.FILE_TYPE;BEGIN fileID := UTL_FILE.FOPEN ('/tmp', 'emp.dat', 'W'); /* Quick and dirty construction here! */ FOR emprec IN (SELECT * F
19、ROM emp) LOOP UTL_FILE.PUT_LINE (TO_CHAR (emprec.empno) | ',' | emprec.ename | ',' |
20、160; . TO_CHAR (emprec.deptno); END LOOP; UTL_FILE.FCLOSE (fileID);END;PUT_LINE相當(dāng)于PUT后加上NEW_LINE;也相當(dāng)于PUTF的格式串"%s/n"。UTL_FILE.PUTF以一個(gè)模版樣式輸出至多5個(gè)字符串,類似C中的printfPROCEDURE UTL_FILE.PUTF (file I
21、N 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 DEFAULT NULL);file
22、由FOPEN返回的文件句柄format決定格式的格式串a(chǎn)rgN可選的5個(gè)參數(shù),最多5個(gè)格式串可使用以下樣式%s在格式串中可以使用最多5個(gè)%s,與后面的5個(gè)參數(shù)一一對(duì)應(yīng)/n換行符。在格式串中沒有個(gè)數(shù)限制%s會(huì)被后面的參數(shù)依次填充,如果沒有足夠的參數(shù),%s會(huì)被忽視,不被寫入文件UTL_FILE.PUTF會(huì)產(chǎn)生以下異常UTL_FILE.INVALID_FILEHANDLEUTL_FILE.INVALID_OPERATIONUTL_FILE.WRITE_ERRORUTL_FILE.FFLUSH確保所有數(shù)據(jù)寫入文件。PROCEDURE UTL_FILE.FFLUSH (file IN UTL_FILE.FILE_TYPE);file由FOPEN返回的文件句柄操作系統(tǒng)可能會(huì)緩存數(shù)據(jù)來提高性能。因此可能調(diào)用put后,打開文件卻看不到寫入的數(shù)據(jù)。在關(guān)閉文件前要讀取數(shù)據(jù)的話可以使用UTL_FILE.FFLUSH。典型的使用方法包括分析執(zhí)行進(jìn)度和調(diào)試紀(jì)錄。UTL_FILE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)地產(chǎn)開發(fā)與產(chǎn)業(yè)升級(jí)
- 工業(yè)機(jī)器人技術(shù)在工程測(cè)量中的應(yīng)用
- 工業(yè)機(jī)器人設(shè)施的運(yùn)維及故障處理
- 工業(yè)機(jī)器人與人工智能的協(xié)同作業(yè)
- 工業(yè)機(jī)器人技術(shù)的突破與應(yīng)用
- 工業(yè)污染防治技術(shù)探討
- 工業(yè)自動(dòng)化中CAD的輔助設(shè)計(jì)與生產(chǎn)
- 工業(yè)自動(dòng)化與智能制造技術(shù)發(fā)展研究
- 工業(yè)自動(dòng)化中的機(jī)器人技術(shù)探討
- 工業(yè)自動(dòng)化技術(shù)與應(yīng)用領(lǐng)域探討
- 網(wǎng)絡(luò)空間安全概論智慧樹知到期末考試答案2024年
- MOOC 管理學(xué)原理-東北財(cái)經(jīng)大學(xué) 中國大學(xué)慕課答案
- 政務(wù)新聞攝影技巧培訓(xùn)課件
- 2024年山東公務(wù)員考試行測(cè)真題及解析【完美打印版】
- 中國十大名畫
- 崗位勝任力評(píng)估表
- 夏季企業(yè)安全知識(shí)培訓(xùn)
- 立式機(jī)組軸線調(diào)整及瓦間隙計(jì)算
- 23秋國家開放大學(xué)《素質(zhì)與思想品德教育》形考任務(wù)1-3參考答案
- 2023秋期國開本科《國際經(jīng)濟(jì)法》形考任務(wù)1-4試題及答案
- 幼兒園好習(xí)慣好性格養(yǎng)成繪本:壞脾氣的蛋糕
評(píng)論
0/150
提交評(píng)論