关于Oracle中大对象的一些处理方法和实例.docxVIP

关于Oracle中大对象的一些处理方法和实例.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于Oracle中大对象的一些处理方法和实例

在oracle中,有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob。下面是对lob数据类型的简单介绍。 blob:二进制lob,为二进制数据,最长可达4GB,存贮在数据库中。 clob:字符lob,字符数据,最长可以达到4GB,存贮在数据库中。 bfile:二进制文件;存贮在数据库之外的只读型二进制数据,最大长度由操作系统限制。 nclob:支持对字节字符集合(nultibytecharacterset)的一个clob列。 对于如何检索和操作这些lob数据一直是oracle数据库开发者经常碰到的问题。下面我将在oracle对lob数据处理的一些方法和技巧,介绍给读者,希望能够对读者以后的开发有所帮助。 oracle中可以用多种方法来检索或操作lob数据。通常的处理方法是通过dbms_lob包。 其他的方法包括使用api(application programming interfaces)应用程序接口和oci(oracle call interface)oracle调用接口程序。一、在oracle开发环境中我们可以用dbms_lob包来处理!dbms_lob包功能强大,简单应用。既可以用来读取内部的lob对象,也可以用来处理bfile对象。但处理两者之间,还有一点差别。处理内部lob对象(blob,clob)时,可以进行读和写,但处理外部lob对象bfile时,只能进行读操作,写的操作可以用pl/sql处理。另外用sql也可以处理lob,但要注意sql仅可以处理整个lob,不能操作lob的数据片。在dbms_lob包中内建了read(),append,write(),erase(),copy(),getlength(),substr()等函数,可以很方便地操作lob对象。这里不做深入讨论,读者可以参看相关的书籍。对于pl/sql,下面介绍一种技巧,用动态的pl/sql语句处理clob对象来传替表名!example 1. 动态PL/SQL,对CLOB字段操作可传递表名table_name,表的唯一标志字段名field_id,clob字段名field_name记录号v_id,开始处理字符的位置v_pos,传入的字符串变量v_clob修改CLOB的PL/SQL过程:updateclobcreate or replace procedure updateclob( table_name in varchar2, field_id in varchar2, field_name in varchar2, v_id in number, v_pos in number, v_clob in varchar2) isloblocclob; c_clobvarchar2(32767);amtbinary_integer; posbinary_integer;query_strvarchar2(1000);beginpos:=v_pos*32766+1;amt := length(v_clob);c_clob:=v_clob;query_str :=select ||field_name|| from ||table_name|| where ||field_id||= :id for update ; --initialize buffer with data to be inserted or updated   EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;   --from pos position, write 32766 varchar2 into lobloc  dbms_lob.write(lobloc, amt, pos, c_clob);   commit;   exception   when others then   rollback;   end;   l /用法说明:   在插入或修改以前,先把其它字段插入或修改,CLOB字段设置为空empty_clob(),   然后调用以上的过程插入大于2048到32766个字符。   如果需要插入大于32767个字符,编一个循环即可解决问题。   查询CLOB的PL/SQL函数:getclob  create or replace function getclob(   table_name in varchar2,   field_id in varchar2,   field_name in varchar2,   v_id in number,   v_pos in number) return varchar2   is   loblocclob;   buffer varcha

文档评论(0)

cunzhu74 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档