<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毛片久久| 国产精品视频免费一区二区三区| 亚洲国产精品激情在线观看| 亚洲欧美日韩综合俺去了| 欧美好看的免费电影在线观看| 久久青青草原亚洲av无码app | 亚洲国产精品久久久久久| 国产真人无码作爱免费视频| 亚洲午夜福利AV一区二区无码| 一级白嫩美女毛片免费| 亚洲一区日韩高清中文字幕亚洲| 一级免费黄色毛片| 亚洲日本va在线视频观看| 国产偷伦视频免费观看| 亚洲黄色中文字幕| 好男人看视频免费2019中文| 国产成人精品久久亚洲高清不卡| 四虎永久免费网站免费观看| 亚洲一区二区三区免费| 亚洲av日韩av高潮潮喷无码 | 亚洲欧洲国产综合AV无码久久| 免费黄网在线观看| 免费毛片毛片网址| 久久久久亚洲av无码尤物| 亚洲一级免费毛片| 亚洲色成人网站WWW永久四虎 | 美女视频黄a视频全免费网站一区| 亚洲精品tv久久久久久久久久| 丁香花在线视频观看免费| 亚洲国产精品无码久久久| 日本高清免费中文字幕不卡| 手机永久免费的AV在线电影网| 亚洲精品午夜国产VA久久成人| 久久九九兔免费精品6| 色偷偷亚洲第一综合网| 亚洲国产精品无码久久一区二区| 成人在线免费看片| 成人a毛片视频免费看| 在线电影你懂的亚洲| 在线看片无码永久免费aⅴ| 国产成人免费ā片在线观看老同学|