database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 9258 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9258
그림 화일 연동 (bfile,blob in oas)예제
작성자
정재익(advance)
작성일
2002-01-05 15:44
조회수
6,876

그림 화일 연동 (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 에서

확인할 수 있다.

[Top]
No.
제목
작성자
작성일
조회
9261checkpoint not complete에 대해서
정재익
2002-01-05
7066
9260DBMS_SQL Package versus Native Dynamic SQL
정재익
2002-01-05
6326
92599i spfile 생성 및 수정 예제
정재익
2002-01-05
5983
9258그림 화일 연동 (bfile,blob in oas)예제
정재익
2002-01-05
6876
9257단.복수의 오라클 엔진에 db복사
정재익
2002-01-05
5156
9256TABLE(INDEX)을 다른 TABLESPACE로 옮기는 방법(8I,ALTER TABLE .. MOVE)
정재익
2002-01-05
6040
9255CLOB COLUMN을 조회하는 방법
정재익
2002-01-05
6779
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다