<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 崛起的程序員 閱讀(437) 評論(0)  編輯  收藏 所屬分類: oracle

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


    網站導航:
     
    主站蜘蛛池模板: 久久久久亚洲AV无码观看| 国产一级淫片免费播放电影| 国产亚洲精品精华液| 一个人看的在线免费视频| jjzz亚洲亚洲女人| 国产亚洲男人的天堂在线观看 | 亚洲国产一成久久精品国产成人综合 | 手机永久免费的AV在线电影网| 日韩免费一区二区三区| 亚洲人成色在线观看| 免费的一级片网站| 久久久亚洲精华液精华液精华液| 日产乱码一卡二卡三免费| 特级毛片A级毛片100免费播放 | 日本红怡院亚洲红怡院最新| 日本一区午夜艳熟免费| 亚洲精品欧洲精品| 在线中文高清资源免费观看| 最新亚洲人成无码网站| 中文字幕亚洲综合久久菠萝蜜 | 在线观看视频免费完整版| 亚洲愉拍一区二区三区| 免费v片在线观看无遮挡| 一级毛片**免费看试看20分钟| 亚洲理论电影在线观看| 免费国产黄网站在线观看| 国产成人亚洲合集青青草原精品| 午夜视频在线观看免费完整版| 麻豆安全免费网址入口| 国产精品亚洲片在线| 日本XXX黄区免费看| 黄页网址大全免费观看12网站| 久久乐国产精品亚洲综合| 中国xxxxx高清免费看视频| 亚洲国产精品精华液| 亚洲午夜福利在线观看| 成年午夜视频免费观看视频| 一级视频在线免费观看| 亚洲婷婷在线视频| 亚洲一级特黄大片在线观看| 1000部拍拍拍18勿入免费凤凰福利|