设为首页 收藏本站
查看: 955|回复: 0

[经验分享] oracle blob clob flob操作

[复制链接]

尚未签到

发表于 2016-7-17 11:54:45 | 显示全部楼层 |阅读模式
--插入bfile­

create or replace procedure insert_book(filename varchar2) as ­

book_file  bfile := NULL;­

bookExists boolean := false;­

begin­

book_file  := bfilename('BOOK_TEXT', filename);­

bookExists  := dbms_lob.fileexists(book_file) = 1;­

­

if bookExists then­

  insert into my_book_files values ((select count(*) from my_book_files) + 1 , book_file);­

  dbms_output.put_line('Insert sucess! file : ' || filename);­

else­

  dbms_output.put_line('Not exists! file : ' || filename);­

   end if;­

exception­

  when dbms_lob.noexist_directory then­

       dbms_output.put_line('Error: ' || sqlerrm);  ­

  when dbms_lob.invalid_directory then­

       dbms_output.put_line('Error : ' || sqlerrm);­

  when others then­

       dbms_output.put_line('Unkown Error : ' || sqlerrm);       ­

end insert_book;­



­

create or replace procedure insertPDF(fileName varchar2) is ­

        fileLoc bfile;­

        nID number;­

        nPDFSize integer;­

        bFileExists boolean := false;­

begin­

     fileLoc := bfilename('PDFDIR',filename);­

     bFileExists := dbms_lob.fileexists(fileLoc) = 1;­

     if bFileExists = false then­

        dbms_output.put_line(fileName || ' not exists');­

        return;­

     end if;­

     ­

     nPDFSize := dbms_lob.getlength(fileLoc);­

     dbms_output.put_line('the length of ' || fileName || ' is ' || nPDFSize);­

     select count(*) + 1 into nID from PDFTable;­

     insert into PDFTable(ID,Pdffile) ­

            values (nID, fileLoc);­

exception ­

  when dbms_lob.noexist_directory then­

       dbms_output.put_line('Error: ' || sqlerrm);  ­

  when dbms_lob.invalid_directory then­

       dbms_output.put_line('Error : ' || sqlerrm);­

  when others then­

       dbms_output.put_line('Unkown Error : ' || sqlerrm);­

end;       ­



­

--插入 blob­

CREATE OR REPLACE procedure insertImg(imgName varchar2) is­

        v_file_loc bfile;­

        v_image blob;­

        nID number;­

        nImgSize integer;­

bFileExists boolean := false;­

begin­

      v_file_loc := bfilename('IMAGEDIR', imgName);­

      bFileExists := dbms_lob.fileExists(v_file_loc) = 1;­

      if bFileExists = false then­

       dbms_output.put_line(imgName || ' not exists');­

       return;­

      end if;­

      nImgSize := dbms_lob.getlength(v_file_loc);­

      dbms_output.put_line(imgName ||' size is ' || nImgSize);­

      dbms_output.put_line('Now Inserting empty image row');­

      select count(*) + 1 into nID from imagetable;­

      insert into imagetable(ID, image)­

             values (nID, empty_blob)­

             returning image into v_image;­

      DBMS_LOB.FILEOPEN (v_file_loc);­

      dbms_output.put_line('Open file');­

      dbms_lob.loadfromfile(v_image, v_file_loc, nImgSize);­

      DBMS_LOB.FILECLOSE(v_file_loc);­

      commit;­

exception­

          when others then­

               dbms_output.put_line('Error happen! ' || sqlerrm);­

        DBMS_LOB.FILECLOSE(v_file_loc);­

end insertImg;­



­

--=================================================­

SQL> create table view_sites_info (­

  2   site_id  number(3),­

  3   audio  blob default empty_blob(),­

  4   document clob default empty_clob(),­

  5   video_file  bfile default null­

  6  );­

表已创建。­

SQL> commit;­

提交完成。­

­

SQL> @e:\writelob­

PL/SQL 过程已成功完成。­

SQL> desc view_sites_info;­

名称                                      是否为空? 类型­

----------------------------------------- -------- ----------------------------­

SITE_ID                                            NUMBER(3)­

AUDIO                                              BLOB­

DOCUMENT                                           CLOB­

VIDEO_FILE                                         BINARY FILE LOB­

SQL> select document from view_sites_info where site_id = 100;­

DOCUMENT                                                                        ­

--------------------------------------------------------------------------------­

This is a writing example                                                       ­

SQL> desc view_sites_info­

名称                                      是否为空? 类型­

----------------------------------------- -------- ----------------------------­

SITE_ID                                            NUMBER(3)­

AUDIO                                              BLOB­

DOCUMENT                                           CLOB­

VIDEO_FILE                                         BINARY FILE LOB­

SQL> insert into blobtest values (1, bfilename('tempdir', 'C:\Documents and Settings\Administrator\My Documents\My Pictures\tu1.jpg'));­

insert into blobtest values (1, bfilename('tempdir', 'C:\Documents and Settings\Administrator\My Documents\My Pictures\tu1.jpg'))­

                                *­

ERROR 位于第 1 行: ­

ORA-00932: 数据类型不一致 ­

­

SQL> desc BFILETEST­

名称                                      是否为空? 类型­

----------------------------------------- -------- ----------------------------­

ID                                                 NUMBER(3)­

FNAME                                              BINARY FILE LOB­

SQL> insert into BFILETEST values (1, bfilename('tempdir', 'C:\Documents and Settings\Administrator\My Documents\My Pictures\tu1.jpg'));­

已创建 1 行。­

­

SQL> get E:\insertimg­

  1  create or replace procedure img_insert (­

  2     tid   varchar2,­

  3     filename  varchar2) as ­

  4     F_LOB   BFILE;­

  5     B_LOB  BLOB;­

  6  begin­

  7   insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;­

  8   F_LOB := bfilename('images', filename);­

  9   dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);­

10   dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));­

11   dbms_lob.fileclose(F_LOB);­

12   commit;­

13* end;­

SQL> r­

  1  create or replace procedure img_insert (­

  2     tid   varchar2,­

  3     filename  varchar2) as ­

  4     F_LOB   BFILE;­

  5     B_LOB  BLOB;­

  6  begin­

  7   insert into image_lob (t_id, t_image) values (tid, empty_blob()) return t_image into B_LOB;­

  8   F_LOB := bfilename('images', filename);­

  9   dbms_lob.fileopen(F_LOB, dbms_lob.file_readonly);­

10   dbms_lob.loadfromfile(B_LOB, F_LOB, dbms_lob.getlength(F_LOB));­

11   dbms_lob.fileclose(F_LOB);­

12   commit;­

13* end;­

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-245317-1-1.html 上篇帖子: ORACLE 的一些操作 下篇帖子: oracle 字符串处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表