CREATE
						
						
						OR
						
						
						REPLACE
						
						
						PACKAGE
						 SYS.utl_file 
						AUTHID
						
						
						CURRENT_USER
						
						
						AS
						
								
								
								
						
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
						
								FILE_TYPE - File handle
						
						
								*/
						
						
								
								
						
				
				
						
								 --utl_file包的操作都需要指定一个file_type型的对象(用FOPEN来装入)
						
				
				
						
								  
						
						TYPE
						 file_type 
						IS
						
						
						RECORD
						 (id 
						BINARY_INTEGER
						,
				
				
						
								                            datatype 
						BINARY_INTEGER
						,
				
				
						
								                            byte_mode 
						BOOLEAN
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
						
								Exceptions
						
						
								*/
						
						
								
								
						
				
				
						
								  file_open            
						EXCEPTION
						;--打开请求失败,文件已经被打开
				
				
						
								  charsetmismatch      
						EXCEPTION
						;--文件使用FOPEN_NCHAR打开,但是进行了nonchar操作(如PUTF/GET_LINE)
				
				
						
								  invalid_path         
						EXCEPTION
						;--错误的路径
				
				
						
								  invalid_mode         
						EXCEPTION
						;--提供了FOPEN不支持的打开模式
				
				
						
								  invalid_filehandle   
						EXCEPTION
						;--文件处理错误
				
				
						
								  invalid_operation    
						EXCEPTION
						;--文件无法打开
				
				
						
								  read_error           
						EXCEPTION
						;--在read时发生操作系统错误
				
				
						
								  write_error          
						EXCEPTION
						;--在write时发生操作系统错误
				
				
						
								  internal_error       
						EXCEPTION
						;--未指定的PLSQL错误
				
				
						
								  invalid_maxlinesize  
						EXCEPTION
						;--FOPEN的最大行定义错误(必须在1到32767之间)
				
				
						
								  invalid_filename     
						EXCEPTION
						;--文件名错误,或无法找到
				
				
						
								  access_denied        
						EXCEPTION
						;--无法进入指定路径
				
				
						
								  invalid_offset       
						EXCEPTION
						;--比较复杂,不管了
				
				
						
								  delete_failed        
						EXCEPTION
						;--删除操作发生错误
				
				
						
								  rename_failed        
						EXCEPTION
						;--重命名操作发生错误
				
				
						
								 
						
				
				
						
								
										
												  
												
														--以下都是自己定义的Exception Errcode.
												
										
								
						
				
				
						
								  charsetmismatch_errcode     
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29298
						;
				
				
						
								  invalid_path_errcode        
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29280
						;
				
				
						
								  invalid_mode_errcode        
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29281
						;
				
				
						
								  invalid_filehandle_errcode  
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29282
						;
				
				
						
								  invalid_operation_errcode   
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29283
						;
				
				
						
								  read_error_errcode          
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29284
						;
				
				
						
								  write_error_errcode         
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29285
						;
				
				
						
								  internal_error_errcode      
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29286
						;
				
				
						
								  invalid_maxlinesize_errcode 
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29287
						;
				
				
						
								  invalid_filename_errcode    
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29288
						;
				
				
						
								  access_denied_errcode       
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29289
						;
				
				
						
								  invalid_offset_errcode      
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29290
						;
				
				
						
								  delete_failed_errcode       
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29291
						;
				
				
						
								  rename_failed_errcode       
						CONSTANT
						
						
						PLS_INTEGER
						:= -
						29292
						;
				
				
						
								
										
										
								
						 
				
						
								
										
												  
												
														--自定义的错误
												
										
								
						
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(charsetmismatch,     -
						29298
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_path,        -
						29280
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_mode,        -
						29281
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_filehandle,  -
						29282
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_operation,   -
						29283
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(read_error,          -
						29284
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(write_error,         -
						29285
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(internal_error,      -
						29286
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_maxlinesize, -
						29287
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_filename,    -
						29288
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(access_denied,       -
						29289
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(invalid_offset,      -
						29290
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(delete_failed,       -
						29291
						);
				
				
						
								  
						
						PRAGMA
						
						
						EXCEPTION_INIT
						(rename_failed,       -
						29292
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FOPEN - open file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** As of 8.0.6, you can have a maximum of 50 files open simultaneously.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** As of 9.0.2, UTL_FILE allows file system access for directories
						
				
				
						
								
										  ** created as database objects.  See the CREATE DIRECTORY command.
						
				
				
						
								
										  ** Directory object names are case sensitive and must match exactly
						
				
				
						
								
										  ** the NAME string in ALL_DIRECTORIES.  The LOCATION parameter may be
						
				
				
						
								
										  ** either a directory string from the UTL_FILE_DIR init.ora parameter
						
				
				
						
								
										  ** or a directory object name.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   location     - directory location of file
						
				
				
						
								
										  **   filename     - file name (including extention)
						
				
				
						
								
										  **   open_mode    - open mode ('r', 'w', 'a' 'rb', 'wb', 'ab')
						
				
				
						
								
										
												        --'r':读文件(清空后再写入)
										
								
						
				
				
						
								
										
												        --'w':写文件
										
								
						
				
				
						
								
										
												
														
																
																		        --'a':追加文件(即不删除之前内容)
																
														
												
										
								
						
				
				
						
								
										
												
														
																
																		
																				
																						
																								        --'rb':byte mode 读文件(清空后再写入)
																						
																				
																		
																
														
												
										
								
						
				
				
						
								
										
												
														
																
																		
																				
																						
																								
																								
																						
																				
																		
																
														
												
										
								
						
						
								
										
												
														
																
																		
																				
																						
																								
																										
																												
																														        --'wb':byte mode 写文件
																												
																										
																								
																						
																				
																		
																
														
												
										
								
						
				
				
						
								
										
												
														
																
																		
																				
																						
																								
																										
																												
																														
																																
																																		
																																				        --'ab':byte mode 追加文件(即不删除之前内容)
																																		
																																
																														
																												
																										
																								
																						
																				
																		
																
														
												
										
								
						
				
				
						
								
										  **   max_linesize - maximum number of characters per line, including the
						
				
				
						
								
										  **                  newline character, for this file.
						
				
				
						
								
										  **                  Valid values are 1 through 32767 and NULL.  A NULL
						
				
				
						
								
										  **                  value for max_linesize indicates that UTL_FILE should
						
				
				
						
								
										  **                  calculate an operating system specific value at runtime.
						
				
				
						
								
										  ** RETURN
						
				
				
						
								
										  **   file_type handle to open file
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_path        - file location or name was invalid
						
				
				
						
								
										  **   invalid_mode        - the open_mode string was invalid
						
				
				
						
								
										  **   invalid_operation   - file could not be opened as requested
						
				
				
						
								
										  **   invalid_maxlinesize - specified max_linesize is too large or too small
						
				
				
						
								
										  **   access_denied       - access to the directory object is denied
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						FUNCTION
						 fopen(location     
						IN
						
						
						VARCHAR2
						,
				
				
						
								                 filename     
						IN
						
						
						VARCHAR2
						,
				
				
						
								                 open_mode    
						IN
						
						
						VARCHAR2
						,
				
				
						
								                 max_linesize 
						IN
						
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						)
				
				
						
								           
						
						RETURN
						 file_type;
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fopen, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FOPEN_NCHAR - open file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** Note: since NCHAR contains mutibyte character, it is highly recommended
						
				
				
						
								
										  **       that the max_linesize is less than 6400.
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								 
						
				
				
						
								  
						
						FUNCTION
						 fopen_nchar(location     
						IN
						
						
						VARCHAR2
						,
				
				
						
								                       filename     
						IN
						
						
						VARCHAR2
						,
				
				
						
								                       open_mode    
						IN
						
						
						VARCHAR2
						,
				
				
						
								                       max_linesize 
						IN
						
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						)
				
				
						
								           
						
						RETURN
						 file_type;
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fopen_nchar, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** IS_OPEN - Test if file handle is open
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle
						
				
				
						
								
										  **
						
				
				
						
								
										  ** RETURN
						
				
				
						
								
										  **   BOOLEAN - Is file handle open/valid?
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						FUNCTION
						 is_open(file 
						IN
						 file_type) 
						RETURN
						
						
						BOOLEAN
						;
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(is_open, 
						WNDS
						, 
						RNDS
						, 
						WNPS
						, 
						RNPS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FCLOSE - close an open file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open)
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 fclose(file 
						IN
						
						
						OUT
						 file_type);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fclose, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FCLOSE_ALL - close all open files for this session
						
				
				
						
								
										  **
						
				
				
						
								
										  ** For Emergency/Cleanup use only.  FILE_TYPE handles will not be
						
				
				
						
								
										  ** cleared (IS_OPEN will still indicate they are valid)
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open)
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 fclose_all;
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fclose_all, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** GET_LINE - Get (read) a line of text from the file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open in read mode)
						
				
				
						
								
										  **   len  - input buffer length, default is null, max is 32767
						
				
				
						
								
										  ** OUT
						
				
				
						
								
										  **   buffer - next line of text in file
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   no_data_found      - reached the end of file
						
				
				
						
								
										  **   value_error        - line to long to store in buffer
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for reading
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   read_error         - OS error occurred during read
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for nchar data.
						
				
				
						
								
										  */
						
				
				
						
								
										
												
														
																  --注意这个函数会读取一行一直到line terminator,然后下一次读取时接着下面的内容
														
												
										
								
						
				
				
						
								
										
												
														
																  --当到达最后一行时返回no_data_found错误
														
												
										
								
						
				
				
						
								  
						
						PROCEDURE
						 get_line(file   
						IN
						 file_type,
				
				
						
								                     buffer 
						OUT
						
						
						VARCHAR2
						,
				
				
						
								                     len    
						IN
						
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(get_line, 
						WNDS
						, 
						RNDS
						, 
						WNPS
						, 
						RNPS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/* GET_LINE_NCHAR - Get (read a line of nchar data from the file.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open in read mode)
						
				
				
						
								
										  **   len  - input buffer length, default is null, max is 32767
						
				
				
						
								
										 
										 ** OUT
						
				
				
						
								
										  **   buffer - next line of text in file
						
				
				
						
								
										  **            the data might be convert from UTF8 to current charset.
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   no_data_found      - reached the end of file
						
				
				
						
								
										  **   value_error        - line to long to store in buffer
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for reading
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   read_error         - OS error occurred during read
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for char data.
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 get_line_nchar(file   
						IN
						
								  file_type,
				
				
						
								                           buffer 
						OUT
						
						
						NVARCHAR2
						,
				
				
						
								                           len    
						IN
						
								  
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(get_line_nchar, 
						WNDS
						, 
						RNDS
						, 
						WNPS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUT - Put (write) text to file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file   - File handle (open in write/append mode)
						
				
				
						
								
										  **   buffer - Text to write
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for nchar data.
						
				
				
						
								
										  */
						
				
				
						
								
										
												
														  --这个就是没有换行符的PUT_LINE,需要自己加NEW_LINE
												
										
								
						
				
				
						
								  
						
						PROCEDURE
						 put(file   
						IN
						 file_type,
				
				
						
								                buffer 
						IN
						
						
						VARCHAR2
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(put, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUT_NCHAR - Put (write) nchar data to file
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file   - File handle (open in write/append mode)
						
				
				
						
								
										  **   buffer - Text to write. the data will convert to UTF8 if needed.
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for char data.
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 put_nchar(file   
						IN
						 file_type,
				
				
						
								        
								        buffer 
						IN
						
						
						NVARCHAR2
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(put_nchar, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** NEW_LINE - Write line terminators to file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open in write/append mode)
						
				
				
						
								
										  **   lines - Number of newlines to write (default 1)
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  */
						
				
				
						
								
										
												
														  --表示在这个位置插入一个换行符(也可以指定空的行数)
												
										
								
						
				
				
						
								
										
												
														  --这个还是比较实用的
												
										
								
						
				
				
						
								  
						
						PROCEDURE
						 new_line(file  
						IN
						 file_type,
				
				
						
								                     lines 
						IN
						
						
						NATURAL
						 := 
						1
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(new_line, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUT_LINE - Put (write) line to file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file      - File handle (open in write/append mode)
						
				
				
						
								
										  **   buffer    - Text to write.
						
				
				
						
								
										  **   autoflush - Flush following write, default=no flush
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for nchar data.
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 put_line(file   
						IN
						 file_type,
				
				
						
								                     buffer 
						IN
						
						
						VARCHAR2
						,
				
				
						
								                     autoflush 
						IN
						
						
						BOOLEAN
						
						
						DEFAULT
						
						
						FALSE
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(put_line, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUT_LINE_NCHAR - Put (write) line of nchar data to file
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file   - File handle (open in write/append mode)
						
				
				
						
								
										  **   buffer - Text to write. The data might convert to UTF8 if needed.
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for char data.
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 put_line_nchar(file   
						IN
						 file_type,
				
				
						
								                     buffer 
						IN
						
						
						NVARCHAR2
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(put_line_nchar, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUTF - Put (write) formatted text to file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** Format string special characters
						
				
				
						
								
										  **     '%s' - substitute with next argument
						
				
				
						
								
										  **     '\n' - newline (line terminator)
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open in write/append mode)
						
				
				
						
								
										  **   format - Formatting string
						
				
				
						
								
										  **   arg1 - Substitution argument #1
						
				
				
						
								
										  **   ...
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										 
										 **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for nchar data.
						
				
				
						
								
										  */
						
				
				
						
								
										
												
														    /***********************************************************************
												
										
								
						
				
				
						
								
										
												
														    这是一个输入格式化内容的过程定义,相当于C语言中的printf,具体的可以看下面这个例子:
												
										
								
						
				
				
						
								
										
												
														    
												
										
								
						
				
				
						
								
										
												
														
																    Hello, world!
    I come from Zork with greetings for all earthlings.
    
														
												
										
								
						
				
				
						
								
										
												
														    my_world varchar2(4) := 'Zork';
    ...
    PUTF(my_handle, 'Hello, world!\nI come from %s with %s.\n',
    my_world,
    'greetings for all earthlings');
												
										
								
						
				
				
						
								
										
												
														    ************************************************************************/
												
										
								
						
				
				
						
								  
						
						procedure
						 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
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(putf, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUTF_NCHAR - Put (write) formatted text to file
						
				
				
						
								
										  **
						
				
				
						
								
										  ** Format string special characters
						
				
				
						
								
										  **     N'%s' - substitute with next argument
						
				
				
						
								
										  **     N'\n' - newline (line terminator)
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open in write/append mode)
						
				
				
						
								
										  **   format - Formatting string
						
				
				
						
								
										  **   arg1 - Substitution argument #1
						
				
				
						
								
										  **   ...
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **                      - file is open for byte mode access
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  **   charsetmismatch    - if the file is open for char data.
						
				
				
						
								
										 
								
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						procedure
						 putf_nchar(file   
						IN
						 file_type,
				
				
						
								                 format 
						IN
						
						
						NVARCHAR2
						,
				
				
						
								                 arg1   
						IN
						
						
						NVARCHAR2
						
						
						DEFAULT
						
						
						NULL
						,
				
				
						
								                 arg2   
						IN
						
						
						NVARCHAR2
						
						
						DEFAULT
						
						
						NULL
						,
				
				
						
								                 arg3   
						IN
						
						
						NVARCHAR2
						
						
						DEFAULT
						
						
						NULL
						,
				
				
						
								                 arg4   
						IN
						
						
						NVARCHAR2
						
						
						DEFAULT
						
						
						NULL
						,
				
				
						
								                 arg5   
						IN
						
						
						NVARCHAR2
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(putf_nchar, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FFLUSH - Force physical write of buffered output
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN
						
				
				
						
								
										  **   file - File handle (open in write/append mode)
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  */
						
				
				
						
								
										
												
														
																  --FFLUSH是用来手工将buffer中的内容写到文件中的
														
												
										
								
						
				
				
						
								
										
												
														  --特别是在文件依然打开的状态下需要读取的时候,可以FFLUSH之后进行read
												
										
								
						
				
				
						
								  
						
						PROCEDURE
						 fflush(file 
						IN
						 file_type);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fflush, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** PUT_RAW - Write a raw value to file.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  file      - File handle (open in write/append mode)
						
				
				
						
								
										  ** IN  buffer    - Raw data
						
				
				
						
								
										  ** IN  autoflush - Flush following write, default=no flush
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **   write_error        - OS error occured during write operation
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 put_raw(file      
						IN
						 file_type,
				
				
						
								                    buffer    
						IN
						
						
						RAW
						,
				
				
						
								                    autoflush 
						IN
						
						
						BOOLEAN
						
						
						DEFAULT
						
						
						FALSE
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(put_raw, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** GET_RAW - Read a raw value from file.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** The GET_RAW() will read until it sees a line termination character
						
				
				
						
								
										  ** or until the number of bytes specified in the LEN parameter has been read.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  file      - File handle (open in write/append mode)
						
				
				
						
								
										  ** OUT buffer    - Raw data
						
				
				
						
								
										  ** IN  len       - Nubmer of bytes to be read
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **   read_error         - OS error occured during read operation
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 get_raw(file   
						IN
						
								  file_type,
				
				
						
								                    buffer 
						OUT
						
						
						NOCOPY
						
						
						RAW
						,
				
				
						
								                    len    
						IN
						
								  
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(get_raw, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FSEEK - Move the file pointer to a specified position within the file.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  file            - File handle (open in write/append mode)
						
				
				
						
								
										  ** IN  absolute_offset - Absolute offset to which to seek.
						
				
				
						
								
										  ** IN  relative_offset - Relative offset, forward or backwards, to which
						
				
				
						
								
										  **                       to seek.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** The file must be open in read mode in order to use fseek().
						
				
				
						
								
										  **
						
				
				
						
								
										  ** If both absolute_offset and relative_offset are not NULL, absolute_offset
						
				
				
						
								
										  ** takes precedence.  A negative relative_offset will cause fseek to
						
				
				
						
								
										  ** close and reopen the file and seek in a forward direction.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_offset     - file is not open for writing/appending
						
				
				
						
								
										  **   invalid_operation  - file is opened for byte mode access
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 fseek(file            
						IN
						
						
						OUT
						 file_type,
				
				
						
								                  absolute_offset 
						IN
						
								     
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						,
				
				
						
								                  relative_offset 
						IN
						
								    
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fseek, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FREMOVE - Delete the specified file from disk.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  location     - directory location of file
						
				
				
						
								
										  ** IN  filename     - file name (including extention)
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_path      - not a valid file handle
						
				
				
						
								
										  **   invalid_filename  - file not found or file name NULL
						
				
				
						
								
										  **   file_open         - file is not open for writing/appending
						
				
				
						
								
										  **   access_denied     - access to the directory object is denied
						
				
				
						
								
										  **   remove_failed     - failed to delete file
						
				
				
						
								
										  */
						
				
				
						
								
										
												
														  --删除文件
												
										
								
						
				
				
						
								  
						
						PROCEDURE
						 fremove(location 
						IN
						
						
						VARCHAR2
						,
				
				
						
								                    filename 
						IN
						
						
						VARCHAR2
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fremove, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FCOPY - Copy all or part of a file to a new file.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  location     - source directory of file
						
				
				
						
								
										  ** IN  filename     - source file name (including extention)
						
				
				
						
								
										  ** IN  dest_dir     - destination directory of file
						
				
				
						
								
										  ** IN  dest_file    - destination file name (including extention)
						
				
				
						
								
										  ** IN  start_line   - line number from which to begin copying, default is
						
				
				
						
								
										  **                         1 referring to the first line in the file
						
				
				
						
								
										  ** IN  end_line     - line number from which to end copying, default is NULL
						
				
				
						
								
										  **                         referring to end-of-file
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_path      - not a valid file handle
						
				
				
						
								
										  **   invalid_filename  - file not found or file name is NULL
						
				
				
						
								
										  **   invalid_lineno    - bad start_line or end_line value
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 fcopy(src_location  
						IN
						
						
						VARCHAR2
						,
				
				
						
								                  src_filename  
						IN
						
						
						VARCHAR2
						,
				
				
						
								                  dest_location 
						IN
						
						
						VARCHAR2
						,
				
				
						
								                  dest_filename 
						IN
						
						
						VARCHAR2
						,
				
				
						
								                  start_line    
						IN
						
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						1
						,
				
				
						
								                  end_line      
						IN
						
						
						BINARY_INTEGER
						
						
						DEFAULT
						
						
						NULL
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fcopy, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FGETATTR - Get file attributes
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  location     - directory location of file
						
				
				
						
								
										  ** IN  filename     - file name (including extention)
						
				
				
						
								
										  ** OUT fexists      - true or false, for exists or doesn't exist.  Note:
						
				
				
						
								
										  **                      the following parameters have no meaning if the file
						
				
				
						
								
										  **                      doesn't exist, in which case, they return NULL.
						
				
				
						
								
										  ** OUT file_length  - length of the file in bytes.
						
				
				
						
								
										  ** OUT block_size   - filesystem block size in bytes.
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_path      - not a valid file handle
						
				
				
						
								
										  **   invalid_filename  - file not found or file name NULL
						
				
				
						
								
										  **   file_open         - file is not open for writing/appending
						
				
				
						
								
										  **   access_denied     - access to the directory object is denied
						
				
				
						
								
										  */
						
				
				
						
								
										  --这个过程是用于获得文件属性的,具体内容上面说的很清楚了
								
						
				
				
						
								  
						
						PROCEDURE
						 fgetattr(location    
						IN
						
						
						VARCHAR2
						,
				
				
						
								                     filename    
						IN
						
						
						VARCHAR2
						,
				
				
						
								                     fexists     
						OUT
						
						
						BOOLEAN
						,
				
				
						
								                     file_length 
						OUT
						
						
						NUMBER
						,
				
				
						
								                     block_size  
						OUT
						
						
						BINARY_INTEGER
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fgetattr, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FGETPOS - Return the current position in the file in bytes.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  file      - File handle (open in write/append mode)
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_filehandle - not a valid file handle
						
				
				
						
								
										  **   invalid_operation  - file is not open for writing/appending
						
				
				
						
								
										  **   invalid_operation  - file is open for byte mode access
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						FUNCTION
						 fgetpos(file 
						IN
						 file_type) 
						RETURN
						
						
						BINARY_INTEGER
						;
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(fgetpos, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						
								  
						
						
								/*
						
				
				
						
								
										  ** FRENAME - Rename a file to a new name.
						
				
				
						
								
										  **
						
				
				
						
								
										  ** IN  location     - source directory of file
						
				
				
						
								
										  ** IN  filename     - source file name (including extention)
						
				
				
						
								
										  ** IN  dest_dir     - destination directory of file
						
				
				
						
								
										  ** IN  dest_file    - destination file name (including extention)
						
				
				
						
								
										  ** IN  overwrite    - boolean signifying whether to overwrite an existing
						
				
				
						
								
										  **                      in the event that one exists, default  no overwrite
						
				
				
						
								
										  ** EXCEPTIONS
						
				
				
						
								
										  **   invalid_path      - not a valid file handle
						
				
				
						
								
										  **   invalid_filename  - file not found or file name NULL
						
				
				
						
								
										  **   rename_failed     - rename of the file failed
						
				
				
						
								
										  **   access_denied     - access to the directory object is denied
						
				
				
						
								
										  */
						
						
								
								
						
				
				
						
								  
						
						PROCEDURE
						 frename(src_location   
						IN
						
						
						VARCHAR2
						,
				
				
						
								                    src_filename   
						IN
						
						
						VARCHAR2
						,
				
				
						
								                    dest_location  
						IN
						
						
						VARCHAR2
						,
				
				
						
								                    dest_filename  
						IN
						
						
						VARCHAR2
						,
				
				
						
								                    overwrite      
						IN
						
						
						BOOLEAN
						
						
						DEFAULT
						
						
						FALSE
						);
				
				
						
								  
						
						PRAGMA
						
						
						RESTRICT_REFERENCES
						(frename, 
						WNDS
						, 
						RNDS
						, 
						TRUST
						);
				
				
						
								 
						
				
				
						END
						 utl_file;