콘텐츠로 이동

UTL FILE

UTL_FILE#

UTL_FILE 패키지는 운영 체제에서 관리하는 텍스트 파일에 접근하여 읽기, 쓰기를 가능하게 한다.

UTL_FILE 패키지를 구성하는 프로시저와 함수는 아래의 표와 같이 제공한다.

프로시저 및 함수 설명
FCLOSE 파일을 닫는다.
FCLOSE_ALL 현재 세션에 열려있는 모든 파일을 닫는다.
FCOPY 파일을 복사한다.
FFLUSH 파일에 데이터를 물리적으로 기록한다.
FOPEN 읽기 또는 쓰기 목적으로 파일을 오픈한다.
FREMOVE 파일을 삭제한다.
FRENAME 파일명을 변경한다.
GET_LINE 파일에서 한 라인을 읽는다.
IS_OPEN 파일이 열려있는지 검사한다.
NEW_LINE 개행 문자를 출력한다.
PUT 문자열을 파일에 기록한다
PUT_LINE 문자열에 개행 문자를 붙여서 파일에 기록한다 (= PUT+NEW_LINE)한다.

UTL_FILE 패키지에 해당하는 프로시저와 함수에 대한 자세한 설명은 Altibase 저장 프로시저의 "파일 제어"를 참고한다.

FCLOSE#

열려 있는 파일 핸들을 닫고 다시 초기화 하는 기능을 제공하는 저장 프로시저이다.

구문#

UTL_FILE.FCLOSE(file IN OUT FILE_TYPE);

파라미터#

이름 입출력 데이터 타입 설명
file IN OUT FILE_TYPE 파일 핸들

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다.

FCLOSE_ALL#

현재 세션에 열려있는 모든 파일 핸들을 닫는 기능을 제공하는 저장 프로시저이다.

구문#

UTL_FILE.FCLOSE_ALL;

파라미터#

파라미터가 없다.

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

수행 시 오류를 발생시키지 않으며 항상 성공한다.

FCOPY#

파일을 라인 단위로 복사하는 기능을 제공하는 저장 프로시저이다. 결과 파일이 해당 디렉토리에 존재하지 않으면 파일이 생성되면서 소스 파일의 내용을 복사하고, 이미 결과 파일이 존재하면 내용을 그대로 덮어 쓴다.

구문#

UTL_FILE.FCOPY (
  location IN VARCHAR(40),
  filename IN VARCHAR(256),
  dest_dir IN VARCHAR(40),
  dest_file IN VARCHAR(256),
  start_line IN INTEGER DEFAULT 1,
  end_line IN INTEGER DEFAULT NULL);

파라미터#

이름 입출력 데이터 타입 설명
location IN VARCHAR(40) 복사할 대상의 원본 파일이 위치하는 디렉토리의 이름
filename IN VARCHAR(256) 소스 파일의 이름
dest_dir IN VARCHAR(40) 결과 파일이 위치하는 디렉토리의 이름
dest_file IN VARCHAR(256) 결과 파일의 이름
start_line IN INTEGER 복사할 시작 라인 번호 (기본값: 1)
end_line IN INTEGER 복사할 마지막 라인 번호. 기본값이면, 파일의 끝까지 복사한다. (기본값: NULL)

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

FCOPY는 다음의 시스템 정의 예외들을 발생시킬 수 있다.

  • INVALID_PATH

  • ACCESS_DENIED

  • INVALID_OPERATION

  • READ_ERROR

  • WRITE_ERROR

FFLUSH#

버퍼에 존재하는 데이터를 물리적으로 파일에 기록하는 저장 프로시저이다.

구문#

UTL_FILE.FFLUSH(file IN FILE_TYPE);

파라미터#

이름 입출력 데이터 타입 설명
file IN FILE_TYPE 파일 핸들

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

FFLUSH는 다음의 시스템 정의 예외들을 발생시킬 수 있다.

  • INVALID_FILEHANDLE

  • WRITE_ERROR

FOPEN#

파일을 읽거나 쓰기 위해 오픈한다.

구문#

UTL_FILE.FOPEN(
  location IN VARCHAR(40),
  filename IN VARCHAR(256),
  open_mode IN VARCHAR(4),
  max_linesize IN INTEGER DEFAULT NULL);

파라미터#

이름 입출력 데이터 타입 설명
location IN VARCHAR(40) 파일이 위치한 디렉토리 객체의 이름
filename IN VARCHAR(256) 파일의 이름
open_mode IN VARCHAR(4) 입력 가능 옵션은 다음 세 가지이다.
r: 읽기 w: 쓰기 a: 이어 쓰기
* 주의 사항: rw, wa와 같이 조합해서 사용할 수 없다.
max_linesize IN INTEGER 호환성을 위한 파라미터이며 무시된다.

결과값#

성공적으로 수행할 경우 데이터 타입이 FILE_TYPE인 파일 핸들을 반환한다.

예외#

FOPEN은 다음의 시스템 정의 예외들을 발생시킬 수 있다.

  • INVALID_PATH

  • ACCESS_DENIED

  • INVALID_OPERATION

  • INVALID_MODE

FREMOVE#

파일을 삭제하는 저장 프로시저이다.

구문#

UTL_FILE.FREMOVE (
  location IN VARCHAR(40),
  filename IN VARCHAR(256));

파라미터#

이름 입출력 데이터 타입 설명
location IN VARCHAR(40) 파일이 위치한 디렉토리 이름
filename IN VARCHAR(256) 파일의 이름

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

FREMOVE는 다음의 시스템 정의 예외들을 발생시킬 수 있다.

  • INVALID_PATH

  • ACCESS_DENIED

  • DELETE_FAILED

FRENAME#

파일의 이름을 바꾸거나, 다른 위치로 옮기는 저장 프로시저이다. UNIX mv 명령어와 동일한 기능이다.

구문#

UTL_FILE.FRENAME (
  location IN VARCHAR(40),
  filename IN VARCHAR(256),
  dest_dir IN VARCHAR(40),
  dest_file IN VARCHAR(256),
  overwrite IN BOOLEAN DEFAULT FALSE );

파라미터#

이름 입출력 데이터 타입 설명
location IN VARCHAR(40) 원본 파일이 위치하는 디렉토리
filename IN VARCHAR(256) 원본 파일의 이름
dest_dir IN VARCHAR(40) 결과 파일이 위치하는 디렉토리
dest_file IN VARCHAR(256) 결과 파일의 이름
overwrite IN BOOLEAN 결과 파일이 이미 존재하는 경우 갱신 여부
TRUE: 새로운 파일로 갱신
FALSE(기본값): 갱신하지 않는다.

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

FRENAME에서 발생 가능한 시스템 정의 예외들은 다음과 같다.

  • INVALID_PATH

  • ACCESS_DENIED

  • RENAME_FAILED

GET_LINE#

파일에서 한 줄씩 읽어오는 저장 프로시저이다.

구문#

UTL_FILE.GET_LINE(
  file IN FILE_TYPE,  
  buffer OUT VARCHAR(32768),  
  len IN INTEGER DEFAULT NULL);

파라미터#

이름 입출력 데이터 타입 설명
file IN FILE_TYPE 파일 핸들
buffer OUT VARCHAR(32768) 파일에서 읽은 한 라인을 저장할 버퍼
len IN INTEGER 파일의 하나의 라인에서 읽어 올 수 있는 최대 bytes이다. 입력하지 않을 경우 1024 bytes 크기만큼 읽어온다. 기본값: NULL

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

GET_LINE에서 발생 가능한 시스템 정의 예외는 다음과 같다.

  • NO_DATA_FOUND

  • READ_ERROR

  • INVALID_FILEHANDLE

IS_OPEN#

파일이 열렸는지 확인한다.

구문#

UTL_FILE.IS_OPEN(file IN FILE_TYPE);

파라미터#

이름 입출력 데이터 타입 설명
file IN FILE_TYPE 파일 핸들

결과값#

열려있으면 TRUE, 열려있지 않으면 FALSE를 반환한다.

예외#

예외를 발생시키지 않는다.

NEW_LINE#

파일에 개행 문자("\n")를 기록하는 저장 프로시저이다.

구문#

UTL_FILE.NEW_LINE(
  file IN FILE_TYPE,  
  lines IN INTEGER DEFAULT 1);

파라미터#

이름 입출력 데이터 타입 설명
file IN FILE_TYPE 파일 핸들
lines IN INTEGER 기록할 라인의 수 기본값: 1

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다

PUT#

버퍼에 파일에서 읽은 문자열을 저장하는 저장 프로시저이다.

구문#

UTL_FILE.PUT(
  file IN FILE_TYPE,
  buffer IN VARCHAR(32768));

파라미터#

이름 입출력 데이터 타입 설명
file IN FILE_TYPE 파일 핸들
buffer IN VARCHAR(32768) 파일에서 읽은 문자열을 저장할 버퍼

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

PUT은 다음의 시스템 정의 예외들을 발생시킬 수 있다.

  • INVALID_FILEHANDLE

  • WRITE_ERROR

PUT_LINE#

파일에 문자열을 포함한 한 라인을 기록하는 저장 프로시저이다.

구문#

UTL_FILE.PUT_LINE(
  file IN FILE_TYPE,
  buffer IN VARCHAR(32768)
  autoflush IN BOOLEAN DEFAULT FALSE);

파라미터#

이름 입출력 데이터 타입 설명
file IN FILE_TYPE 파일 핸들
buffer IN VARCHAR(32768) 파일에서 읽은 문자열을 저장할 버퍼
autoflush IN BOOLEAN 버퍼를 비울 것인지 여부 기본값: FALSE(비우지 않음)

결과값#

저장 프로시저이므로 반환하는 결과값은 없다.

예외#

PUT_LINE는 다음의 시스템 정의 예외들을 발생시킬 수 있다.

  • INVALID_FILEHANDLE

  • WRITE_ERROR