栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

插入大于2000或4000字节的BLOB测试字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

插入大于2000或4000字节的BLOB测试字符串

对于初学者,您需要了解什么是LOB。它们是“大数据”,可能比Oracle中的任何其他数据类型大。它们就像文件系统上的常规文件。为了在文件系统上写入文件,您必须

  1. 打开文件进行写入
  2. 如果您希望从头开始填充文件,请截断文件
  3. 循环读取块中的源数据
  4. 一次又一次地将数据块添加到文件中
  5. 关闭档案

LOB大致相同。在您的表中,LOB(CLOB / BLOB /
NCLOB)列只是指向磁盘存储器上保存实际数据的其他位置的指针/引用。用标准的Oracle术语,该指针称为“ LOB定位器”。你需要

  1. 打开/初始化LOB定位器
  2. 如果您希望从头开始填充LOB内容,则将其截断
  3. 循环将您的数据块附加到LOB内容中
  4. 关闭LOB定位器

在PL / SQL中,它可能看起来像这样:

-- create table blob_test(id number, b blob);declare   v_b blob;   aaa raw(32767);  longLine varchar2(32767);begin   longLine :=  LPAd('aaaa', 32767,'x');  aaa := UTL_RAW.CAST_TO_RAW(longLine);  insert into blob_test values(1,empty_blob()) returning b into v_b;  dbms_lob.open(v_b,dbms_lob.lob_readwrite);  dbms_lob.writeappend(v_b,UTL_RAW.LENGTH (aaa) ,aaa);  dbms_lob.close(LOB_LOC=>v_b);  commit;end;

一个解释:

  1. 初始化LOB定位器=
    insert into blob_test values(1,empty_blob()) returning b into v_b;
  2. 打开LOB定位器以编写=
    dbms_lob.open(v_b,dbms_lob.lob_readwrite);
  3. 如果您希望从头开始填充LOB内容,则将其截断。这是通过
    empty_blob()
    调用来完成的
    insert
  4. 在循环中将数据块附加到LOB内容中,一个一个=在此仅进行一次迭代
    dbms_lob.writeappend()
    ,仅将单个
    aaa
    长度的块
    utl_raw.length(aaa)
    (最大32767个)附加到LOB中
    v_b
  5. 关闭LOB定位器=
    dbms_lob.close(LOB_LOC=>v_b);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号