<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-88  評論-77  文章-48  trackbacks-0

    使用PL/SQL從數據庫中讀取BLOB對象

    作者:eygle
    出處:
    http://www.eygle.com/blog
    日期:April 30, 2005
    瀏覽次數: 507
    本文鏈接:
    http://www.eygle.com/archives/2005/04/eoaplsqloeaoeae.html

    ? 使用存儲過程(PL/SQL)向數據庫中存儲BLOB對象 | Blog首頁 | 五一的生活 ?


    注意:本文方法僅適用于Oracle10g,由于在Oracle9i中存在Bug,不能使用此方法。
    在Oracle9i中,可以通過java/c編碼實現,但是可能在目標文件名為中文時存在問題。
    1.確認現有對象

    SQL> col fdesc for a30
    SQL> select fid,fname,fdesc from eygle_blob;
    
           FID FNAME                                              FDESC
    ---------- -------------------------------------------------- ------------------------------
             1 ShaoLin.jpg                                        少林寺-康熙手書
             2 DaoYing.jpg                                        倒映
    

    2.創建存儲Directory
    SQL> connect / as sysdba
    Connected.
    SQL> create or replace directory BLOBDIR as 'D:\oradata\Pic';
    
    Directory created.
    
    SQL>
    SQL> grant read,write on directory BLOBDIR to eygle;
    
    Grant succeeded.
    
    SQL>
    

    3.創建存儲過程
    SQL> connect eygle/eygle
    Connected.
    SQL>
    SQL> CREATE OR REPLACE PROCEDURE eygle_dump_blob (piname varchar2,poname varchar2) IS
      2    l_file      UTL_FILE.FILE_TYPE;
      3    l_buffer    RAW(32767);
      4    l_amount    BINARY_INTEGER := 32767;
      5    l_pos       INTEGER := 1;
      6    l_blob      BLOB;
      7    l_blob_len  INTEGER;
      8  BEGIN
      9    SELECT FPIC
     10    INTO      l_blob
     11    FROM      eygle_blob
     12    WHERE  FNAME = piname;
     13
     14    l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
     15    l_file := UTL_FILE.FOPEN('BLOBDIR',poname,'wb', 32767);
     16
     17    WHILE l_pos < l_blob_len LOOP
     18      DBMS_LOB.READ (l_blob, l_amount, l_pos, l_buffer);
     19      UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
     20      l_pos := l_pos + l_amount;
     21    END LOOP;
     22
     23    UTL_FILE.FCLOSE(l_file);
     24
     25  EXCEPTION
     26    WHEN OTHERS THEN
     27      IF UTL_FILE.IS_OPEN(l_file) THEN
     28        UTL_FILE.FCLOSE(l_file);
     29      END IF;
     30      RAISE;
     31  END;
     32  /
    
    Procedure created.
    

    4.取出數據
    SQL> host ls -l d:\oradata\Pic
    total 7618
    -rwxrwxrwa   1 gqgai           None            2131553 Apr 19 10:12 DaoYing.jpg
    -rwxrwxrwa   1 gqgai           None            1768198 Apr 19 10:12 ShaoLin.jpg
    
    SQL> exec eygle_dump_blob('ShaoLin.jpg','01.jpg')
    
    PL/SQL procedure successfully completed.
    
    SQL> host ls -l d:\oradata\Pic
    total 11072
    -rwxrwxrwa   1 Administrators  SYSTEM          1768198 Apr 26 07:16 01.jpg
    -rwxrwxrwa   1 gqgai           None            2131553 Apr 19 10:12 DaoYing.jpg
    -rwxrwxrwa   1 gqgai           None            1768198 Apr 19 10:12 ShaoLin.jpg
    
    SQL>
    SQL> exec eygle_dump_blob('DaoYing.jpg','02.jpg')
    
    PL/SQL procedure successfully completed.
    
    SQL> host ls -l d:\oradata\Pic
    total 15236
    -rwxrwxrwa   1 Administrators  SYSTEM          1768198 Apr 26 07:16 01.jpg
    -rwxrwxrwa   1 Administrators  SYSTEM          2131553 Apr 26 07:19 02.jpg
    -rwxrwxrwa   1 gqgai           None            2131553 Apr 19 10:12 DaoYing.jpg
    -rwxrwxrwa   1 gqgai           None            1768198 Apr 19 10:12 ShaoLin.jpg
    
    

    posted on 2006-04-27 09:25 崛起的程序員 閱讀(439) 評論(0)  編輯  收藏 所屬分類: oracle

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成Av人片乱码色午夜| 亚洲国产精品国产自在在线| 国产性爱在线观看亚洲黄色一级片| 亚洲欧好州第一的日产suv| 最新欧洲大片免费在线| 久久亚洲AV成人无码软件| 亚洲电影免费在线观看| 久久久无码精品亚洲日韩京东传媒| 四虎国产精品永久免费网址 | 456亚洲人成在线播放网站| 在线观看H网址免费入口| 亚洲高清中文字幕免费| 好男人视频在线观看免费看片| 亚洲欧美一区二区三区日产| 在线视频免费国产成人| eeuss影院免费92242部| 亚洲国产综合专区电影在线| 国产91色综合久久免费| 亚洲欧美aⅴ在线资源| 亚洲日本在线观看视频| 四虎国产成人永久精品免费| 亚洲一区二区三区在线观看蜜桃| 日韩吃奶摸下AA片免费观看 | 有色视频在线观看免费高清在线直播| 亚洲国产一区二区三区| 国产猛男猛女超爽免费视频| 亚洲手机中文字幕| 国产一级理论免费版| 日韩精品无码免费专区午夜| 亚洲精品成人久久| 国产jizzjizz视频免费看| 中文字幕的电影免费网站| 亚洲综合色丁香麻豆| 四虎在线播放免费永久视频| 色www永久免费| 亚洲日本成本人观看| 亚洲成av人影院| 国产va免费精品观看精品| yellow免费网站| 亚洲日日做天天做日日谢| 久久久久亚洲AV综合波多野结衣|