insert into mytable (id, data) values (1, empty_blob());
写成
insert into mytable (id, data) values (1, null);
会有什么问题? 为什么要用empty_blob?

解决方案 »

  1.   

    插入 LOB 要使用 INSERT 插入一个内部 LOB,首先需要使用相应的 Oracle EMPTY_BLOB 函数来初始化 LOB,你无法更新一个包含 NULL 值的 LOB。
      

  2.   

    看你是如何来使用blob字段的了。
    单纯的dml操作,不会有任何问题。
    如果是plsql中或者是oci中操作blob列,有些方法需要blob列不能为null,否则报ORA-01405错误。
    所以习惯上一般用empty_blob()和empty_clob()来初始化clob列。
    为了方便,其实你可以这么定义表:
    create table ttt
    (b_col blob default empty_blob(),
    ....
    );
      

  3.   

    insert 语句中的empty_blob()可以返回一个blob指针,为后面插入blob内容做准备的。对于blob是否可以直接插入二进制变量值,我没做过试验;
    但对于clob我做过,可以直接象varchar2变量一样处理,如:
    insert into mytable (id, data) values (1, '... clob文字内容 ...'); 
      

  4.   

    用PHP怎么给Clob添加值呢 ?