더북(TheBook)

① 파일 처리

메일에 파일을 첨부하려면 첨부할 파일이 필요한데 문제는 PL/SQL을 통해 메일을 보낸다는 점이다. 즉 PL/SQL 상에서 어떤 식으로든 파일을 읽어와야 하는데 이것이 그리 간단한 문제가 아니다. PL/SQL은 오라클이라는 DB 상에 존재하는 반면 파일은 윈도우나 유닉스 같은 운영체제 상에 존재한다. 즉 PL/SQL에서 운영체제 관할의 파일을 읽어와야 한다는 말인데, 어떻게 해야 할까?

너무 고민할 필요가 없다. 친절하게도 오라클에는 PL/SQL에서 파일을 처리할 수 있도록 UTL_FILE이란 시스템 패키지를 제공하고 있다. UTL_FILE 패키지에는 운영체제 상에 있는 파일을 열고, 읽고, 쓰는데 필요한 각종 함수와 프로시저가 내장되어 있다. 그런데 이 패키지에 대해 살펴보기 전에 알아야 할 내용이 또 있다. 바로 그 주인공은 디렉토리다.

파일은 디렉토리 상에 존재한다. 따라서 UTL_FILE 패키지를 사용하기 전에 먼저 PL/SQL 상에서 운영체제의 디렉토리에 접근할 수 있어야 한다. 오라클에서는 디렉토리(DIRECTORY) 객체를 사용해 운영체제에 있는 실제 디렉토리에 접근할 수 있다. 먼저 C 드라이브 밑에 “ch18_file”이란 폴더(디렉토리)를 만든 다음, 다음과 같이 이 디렉토리를 가리키는 DIRECTORY 객체를 생성해 보자.

입력

    -- Directory 객체 생성
    CREATE OR REPLACE DIRECTORY SMTP_FILE AS 'C:\ch18_file';

결과

    directory SMTP_FILE이(가) 생성되었습니다.

이제 간단한 텍스트 파일을 만들어 “ch18_file” 폴더에 저장해 보자.

그림 18-9 첨부파일로 사용할 텍스트 파일

[그림 18-9]의 텍스트 파일은 위키피디아에서 MIME에 대한 내용 일부를 가져온 것이고 이를 ch18_txt_file’ 라는 이름으로 저장했다. 이제 PL/SQL 상에서 ‘SMTP_FILE’ 이라는 디렉토리 객체에 접근해 방금 저장한 파일에 접근할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.