그림 화일 연동 (bfile,blob in oas)예제
(V3.X/4.X) How to handle images using DBMS_LOB via OAS
화일 시스템에 저장된 그림 화일을 dbms_lob 패키지를 사용해서
오라클 데이터베이스에 저장하고 OAS 를 통해서 이를 display 하는 방법을 살펴보자.
첫 단계
-------
Create a table to store the blobs:
create table blobs
( id varchar2(255),
blob_col blob
);
두번째 단계
-----------
화일 시스템에 대한 로지컬 디렉토리를 오라클 데이터베이스에 생성하자
create or replace directory MY_FILES as '/mnt3/rctest80/network/hwankim';
세번째 단계
-----------
데이터베이스의 blob 에 그림화일을 load 하는 procedure 를 생성하자.
물론, /mnt3/rctest80/network/hwankim 에는 hwan.gif 가 받드시 존재해야 한다.
create or replace procedure insert_img as
f_lob bfile;
b_lob blob;
begin
insert into blobs values ( 'MyGif', empty_blob() )
return blob_col into b_lob;
f_lob := bfilename( 'MY_FILES', 'hwan.gif' );
dbms_lob.fileopen(f_lob, dbms_lob.file_readonly);
dbms_lob.loadfromfile( b_lob, f_lob, dbms_lob.getlength(f_lob) );
dbms_lob.fileclose(f_lob);
commit;
end;
/
네번째 단계
-----------
OAS 에서 그림화일을 display 하는 패키지를 생성하자.
주의할 점은 utl_raw 패키지는 따로 생성을 해주어야 하므로
svrmgrl 를 띄워서 $ORACLE_HOME/rdbms/admin 의 utlraw.sql 과
prvtrawb.plb 을 먼저 실행해 주어야 컴파일 오류가 생기지 않는다.
CREATE OR REPLACE PACKAGE img AS
PROCEDURE select_img_table;
PROCEDURE retreive_img_data(no varchar2);
END;
/
CREATE OR REPLACE PACKAGE BODY img AS
PROCEDURE select_img_table AS
CURSOR c1 IS SELECT id, blob_col FROM blobs;
BEGIN
htp.htmlopen;
htp.bodyopen;
FOR i IN c1 LOOP
htp.print(i.id);
htp.para;
htp.img(OWA_UTIL.GET_OWA_SERVICE_PATH||'img.retreive_img_data?no='||i.id);
htp.bodyclose;
htp.htmlclose;
END LOOP;
END select_img_table;
PROCEDURE retreive_img_data(no varchar2) AS
Lob_field BLOB;
buffer RAW(32767);
offset BINARY_INTEGER:=1;
buffer_size NUMBER:=32767;
BEGIN
SELECT blob_col INTO lob_field FROM blobs WHERE id=no;
OWA_UTIL.MIME_HEADER('image/gif');
LOOP
DBMS_LOB.READ(lob_field,buffer_size,offset,buffer);
htp.prn(UTL_RAW.CAST_TO_VARCHAR2(buffer));
offset:=offset+buffer_size;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
htp.p(sqlerrm);
END retreive_img_data;
END img;
/
마지막으로 http://o200.kr.oracle.com:3755/hwan/plsql/img.select_img_table
와 같이 pl/sql cartridge 가 installed 된 적당한 URL 을 통해
오라클 데이터베이스에 저장된 id 와 그림화일을 web browser 에서
확인할 수 있다.
|