insert into Tb(Content) values()
Content是CLOB字段

解决方案 »

  1.   

    insert into Tb(content) values('CRMNet');
    只要你想插入的内容不超过4000Bytes, 就可以直接插入。
    否则得使用程序插入。
      

  2.   

    ....操作lob类型字段
    BFILE:  1.      BFILE类型一般用于存储文件。      建立一个目录:      create directory tmp as 'e:\';      建立一个有bfile类型column的表:      create table a(photo bfile);      插入值:      insert into a values(bfilename('tmp','aa.jpg'));      --bfilename('direct','filename')这个函数将文件转换为bfile类型BLOB:  2.    将图片插入到BLOB类型的字段中     建立一个表:     create table a(a blob);     建立一个目录:     create directory tmp as 'e:\';     建立一个PL/SQL块:     declare       b_file bfile;       b_lob blob;     begin       insert into a(a) values(empty_blob()) return a into b_lob;        --为了使PL/SQL编译成功,必须先为该列插入一个empty_blob() 值,return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中。
          b_file:=bfilename('tmp','filename.jpg');      --tmp是建立的文件所在的目录,filename.jpg是文件名;将文件转换为bfile类型
          dbms_lob.open(b_file,dbms_lob.file_readonly);--将b_file 以只读的方式打开
          dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));-- 将b_file中的内容转换到b_lob中
     dbms_lob.close(b_file);
     commit;
    end; CLOB:      方法和blob一样。3.将表中读数据转换为xml并打印:declare
    resultvalue clob;
    xmlstr varchar2(32767);
    line varchar2(2000);
    line_no integer:=1;
    begin
    resultvalue:=dbms_xmlquery.getXML('select name,sex from employee');--将SQL的查询语句的结果转换成一个clob类型的xml
    xmlstr:=dbms_lob.substr(resultvalue,32767);--从clob类型中截取字符串
    loop
        exit when xmlstr is null;
        line:=substr(xmlstr,1,instr(xmlstr,chr(10))-1);--从xmlstr中截取一个字符串,从第一个字符开始,以ascii码为10的字符结尾
        dbms_output.put_line(line_no || ':'||line);--打印行号+字符串
        xmlstr:=substr(xmlstr,instr(xmlstr,chr(10))+1);--从第一个回车后开始截取字符串到结尾,赋值给xmlstr
        line_no:=line_no+1;
    end loop;
    end;--主要用到的程序包dbms_xmlquery; dbms_lob;
      

  3.   

    --上次做了测试 10g下
    create table t_blob(stuname varchar2(20),dblob blob);scott@YPCOST> ed
    已写入 file afiedt.buf  1* insert into t_blob values ('tom',utl_raw.cast_to_raw('tom is a good boy!'))
    scott@YPCOST> /已创建 1 行。scott@YPCOST> select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME
    --------------------
    UTL_RAW.CAST_TO_VARCHAR2(DBLOB)
    ----------------------------------------------------------------------------------------------------
    tom
    tom is a good boy!
    scott@YPCOST> update t_blob set dblob=utl_raw.cast_to_raw('tom is not a good boy!') where stuname='t
    om';已更新 1 行。scott@YPCOST> commit;提交完成。scott@YPCOST> select stuname,utl_raw.cast_to_varchar2(dblob) from t_blob;STUNAME
    --------------------
    UTL_RAW.CAST_TO_VARCHAR2(DBLOB)
    ----------------------------------------------------------------------------------------------------
    tom
    tom is not a good boy!
      

  4.   

    你可以用update 一直往后添加 
    每截取1000个字符 就调用一次update,在原来字段后边添加上
    不知道行不行 我没试过
      

  5.   

    一般是先插入基础数据 ,在update clob   。由于clob数据很大 所以要分次读取 clob
    下面是pb 读取blob  跟clob 差不多
    ll_file_size = FileLength(is_pathname)
    fh = FileOpen( is_pathname, StreamMode!, Read!, LockReadWrite!)IF fh <> -1 THEN
    nBytes = FileRead(fh, blTemp) DO WHILE nBytes > 0
    blGoodsImage = blGoodsImage + blTemp
    ll_Pos = ll_Pos + nBytes
    FileSeek( fh, ll_Pos, FromBeginning!)
    nBytes = FileRead(fh, blTemp)
    LOOP FileClose(fh)
    END IF在修改bolb
    updateblob tb_qc050
           SET good_image = :blGoodsImage 
      

  6.   

    内容超过4000Bytes就无法直接插入了