UTL_FILE
UTL_FILE 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명합니다.
개요
UTL_FILE은 운영체제에서 관리하는 파일에 접근하기 위한 함수와 프러시저를 제공하는 패키지입니다. 파 일의 경로는 디렉터리명으로 지정할 수 있습니다.
UTL_FILE 패키지에서 정의된 타입과 예외 상황은 다음과 같습니다.
타입
FILE_TYPE의 타입은 파일 식별자로 사용됩니다.
TYPE FILE_TYPE IS RECORD
(
id BINARY_INTEGER,
datatype BINARY_INTEGER
);예외 상황
INVALID_PATH
파일의 경로가 유효하지 않은 경우
INVALID_MODE
유효하지 않은 모드를 사용한 경우
INVALID_FILEHANDLE
유효하지 않은 파일 핸들에 파일 연산을 하는 경우
INVALID_OPERATION
파일에 대한 연산을 수행할 수 없는 경우
READ_ERROR
읽기 연산 중에 에러가 발생하는 경우
WRITE_ERROR
쓰기 연산 중에 에러가 발생하는 경우
INTERNAL_ERROR
예기치 못한 에러가 발생하는 경우
FILE_OPEN
파일이 열려 있어서 해당 연산을 수행할 수 없는 경우
INVALID_MAXLINESIZE
FOPEN 함수를 사용할 때 max_linesize 값이 유효하지 않은 경우
max_linesize 값은 1과 32767bytes 사이의 값이어야 함
INVALID_FILENAME
파일 이름이 유효하지 않은 경우
ACCESS_DENIED
해당 파일에 대한 접근 권한이 없는 경우
INVALID_OFFSET
다음과 같이 유효하지 않은 오프셋이 주어진 경우
상대 오프셋과 절대 오프셋이 모두 NULL일 때 유효하지 않음
절대 오프셋이 음수일 때 유효하지 않음
오프셋이 파일 끝의 위치를 초과했을 때 유효하지 않음
DELETE_FAILED
DELETE 연산이 실패한 경우
RENAME_FAILED
RENAME 연산이 실패한 경우
프러시저
본 절에서는 UTL_FILE 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.
아래 예시들은 DIRECTORY 오브젝트 USER_PATH가 이미 존재한다고 가정합니다.
실제 사용자 환경의 경로에 맞게 DIRECTORY 오브젝트를 생성해야 합니다.
경로가 잘못되더라도 DIRECTORY 오브젝트는 생성될 수 있으나, 해당 경로 접근 시 ERROR_PKG_UTL_FILE_INVALID_DIR 오류가 발생합니다.
FCLOSE
파일을 닫는 프러시저입니다.
FCLOSE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들
예외 상황
– WRITE_ERROR
– INVALID_FILEHANDLE
예제
FCLOSE_ALL
현재 세션에 열린 모든 파일을 닫는 프러시저입니다.
FCLOSE_ALL 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
예외 상황
– WRITE_ERROR
예제
FCOPY
파일의 연속되는 부분을 새로 생성된 파일에 복사하는 프러시저입니다.
FCOPY 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
location
복사를 진행할 대상 파일이 위치할 경로의 디렉터리명
filename
복사를 진행할 대상 파일의 이름
dest_dir
복사가 진행된 이후 파일이 위치할 경로의 디렉터리명
dest_file
복사가 진행된 이후의 파일의 이름
start_line
복사를 진행할 시작 위치
파일의 라인 번호를 사용해 명시(기본값: 1, 파일의 첫 번째 의미)
end_line
복사를 끝낼 종료 위치
start_line과 마찬가지로 라인 번호로 명시 (기본값: NULL, 파일의 마지막 라인을 의미)
예제
FFLUSH
아직 파일에 쓰지 않고 버퍼에 남아 있는 데이터를 파일에 쓰는 프러시저입니다. 데이터는 반드시 EOL 문자 로 끝나야 합니다.
FFLUSH 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
예외 상황
– INVALID_FILEHANDLE
– INVALID_OPERATION
– WRITE_ERROR
예제
FGETATTR
디스크 파일의 속성을 반환하는 프러시저입니다.
FGETATTR 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
location
파일의 경로를 나타내는 디렉터리명
filename
파일의 이름
fexists
파일의 존재 여부
file_length
파일의 길이(Byte)
blocksize
파일 시스템의 블록 크기(Byte)
예제
FREMOVE
파일을 삭제하는 프러시저입니다. 파일을 삭제하는 데 충분한 권한이 없는 경우 DELETE_FAILED 예외 상황이 발생합니다.
FREMOVE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
location
파일의 위치를 나타내는 디렉터리명
filename
파일의 이름
예외 상황
– DELETE_FAILED
예제
FRENAME
파일의 이름을 변경하는 프러시저입니다. OS 셸에서 사용하는 mv 명령어와 동일하게 동작합니다.
FRENAME 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
location
원본 파일의 경로를 나타내는 디렉터리명
filename
원본 파일의 이름
dest_dir
변경된 파일의 경로를 나타내는 디렉터리명
dest_file
변경된 파일의 이름
overwrite
변경된 파일의 이름이 이미 존재할 경우 덮어쓸지를 지정
예제
FSEEK
파일 포인터의 위치를 변경하는 프러시저입니다.
FSEEK 프러시저의 세부내용은 다음과 같습니다.
프로토타입
파라미터
fid
UTL_FILE 패키지의 FILE_TYPE 타입의 파일 식별자
absolute_offset
절대 오프셋, 파일의 시작부터의 오프셋 값(기본값: NULL)
relative_offset
상대 오프셋, 현재 파일 포인터 위치에서 양수이면 뒤쪽, 음수이면 앞쪽 방향을 나타냄
절대 오프셋이 있는 경우 상대 오프셋은 무시됨 (기본값: NULL)
예외 상황
– INVALID_OFFSET
예제
GET_LINE
EOL 문자 또는 파일이 끝날 때까지의 내용을 읽어 오는 프러시저입니다. FOPEN 함수에서 지정한max_linesize 이상을 읽어 올 수 없습니다.
GET_LINE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
buffer
읽어 온 데이터
len
파일로부터 읽어 올 Byte의 크기 (기본값: NULL, NULL인 경우 max_linesize 값을 가짐)
예외 상황
– INVALID_FILEHANDLE
– INVALID_OPERATION
예제
GET_RAW
파일로부터 RAW 타입의 문자열을 읽어 오는 프러시저입니다. EOL 문자를 무시하며, 읽은 Byte의 크기를 반환합니다.
GET_RAW 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
buffer
읽어 온 데이터
len
파일로부터 읽어 올 Byte의 크기 (기본값: NULL, NULL인 경우 max_linesize 값을 가짐)
예제
NEW_LINE
파일에 하나 이상의 EOL 문자를 넣는 프러시저입니다. EOL 문자는 플랫폼에 따라 다르다.
NEW_LINE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
lines
파일에 넣을 EOL 문자의 개수
예외 상황
– INVALID_FILEHANDLE
– INVALID_OPERATION
– WRITE_ERROR
예제
PUT
파일에 문자열을 넣을 때 사용하는 프러시저입니다.
PUT 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
buffer
파일에 쓸 내용
파일이 w(쓰기 텍스트)나 a(추가 텍스트) 모드로 열리지 않은 경우 IN VALID_OPERATION 예외 상황이 발생
예외 상황
– INVALID_FILEHANDLE
– INVALID_OPERATION
– WRITE_ERROR
예제
PUTF
형식화된 PUT 프러시저입니다. PUTF의 형식화된 문자열은 C언어에서 표준 입출력(standard I/O)의 fprintf 에서의 형식화된 문자열과 동일하게 %s와 이스케이프 문자를 포함합니다. 이스케이프 문자로 \n을 사용할 수 있으며 %s는 그 뒤에 나오는 인수 문자열을 대체합니다.
예를 들어 다음과 같은 세 개의 인수가 있다고 가정하면,
위의 세 개의 인수를 사용하는 형식화된 문자열은 다음과 같습니다.
또한 위의 내용이 실행되면 다음과 같은 내용이 출력됩니다.
PUTF 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
format
%s와 이스케이프 문자(\n)를 포함하는 형식화된 문자열
arg1-5
%s에 대체되는 선택할 수 있는 문자열(기본값: NULL)
예외 상황
– INVALID_FILEHANDLE
– INVALID_OPERATION
– WRITE_ERROR
예제
PUT_RAW
RAW 타입 데이터의 내용을 파일에 쓰는 프러시저입니다.
PUT_RAW 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
fid
파일 식별자
r
파일에 쓸 데이터
autoflush
쓰기를 한 후 출력 버퍼를 비울지 여부를 결정
TRUE : 버퍼를 비움
FALSE : 기본값으로 버퍼를 비우지 않음
예제
PUT_LINE
라인을 파일에 쓰는 프러시저입니다. 이때 라인은 플랫폼에 종속적인 EOL 문자로 끝냅니다.
PUT_LINE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
buffer
파일에 쓸 라인
autoflush
쓰기를 한 후 출력 버퍼를 비울지 여부를 결정
TRUE : 버퍼를 비움
FALSE : 기본값으로 버퍼를 비우지 않음
예제
함수
본 절에서는 UTL_FILE 패키지에서 제공하는 함수를 알파벳 순으로 설명합니다.
FGETPOS
파일 내에서 파일 포인터의 상대적인 위치(Byte)를 반환하는 함수입니다.
FGETPOS 함수의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
fid
파일 핸들러
예제
FOPEN
파일을 여는 함수입니다. 최대 50개의 파일을 동시에 열 수 있습니다.
FOPEN 함수의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
location
파일의 경로를 나타내는 디렉터리명
filename
파일의 이름
open_mode
파일 모드입니다. 파일 모드의 종류는 다음과 같음
r : 읽기 텍스트 모드
w : 쓰기 텍스트 모드
a : 추가 텍스트 모드
rb : 읽기 바이트 모드
wb : 쓰기 바이트 모드
ab : 추가 바이트 모드로, 추가 모드에서 파일이 존재하지 않으면 쓰기 모드로 파일을 생성
max_linesize
각 라인에 포함되는 byte 수의 최댓값으로 newline 문자를 포함
최소 1byte에서 최대 32767bytes (기본값: 1024bytes)
예외 상황
– INVALID_PATH
– INVALID_MODE
– INVALID_OPERATION
– INVALID_MAXLINESIZE
예제
IS_OPEN
파일 핸들러를 통해 파일이 열려 있는지 검사하는 함수입니다. 파일이 열려있는 경우 TRUE를 반환하고, 그렇지 않은 경우 FALSE를 반환합니다.
IS_OPEN 함수의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
file
파일 핸들러
예제
Last updated

