create table t_ls(c1 int not null, c2 clob null, constraint pk_t_ls primary key (c1));
declare
  s    varchar2(32000):='';
  i    int;
begin
  for i in 1..3000 loop
    s := s||'0123456789';
  end loop;
  i := (sysdate-trunc(sysdate))*24*3600;
  insert into t_ls values(i, s);
  commit;
end;
/
select dbms_lob.getlength(c2) from t_ls;

解决方案 »

  1.   

    long 或者clob 类型都可以
      

  2.   

    谢谢bobfang(匆匆过客)
    估计你的这语句一样会遇到和我同样的报错
    '说sql有个literal长度太长'我的意思是:
    当我往oracle表的1long字段中写一大于4000字符的字符串变量时,ORACLE报错,说sql有个literal长度太长
      

  3.   

    我的语句类似如下:update tablename1 set field1='..大于4000字符....' where field2='3'出错
    ORA-01704: string literal too long
      

  4.   

    可否问一下你的QQ
    我的为:398526289
    你的SQL作为过程没问题,
    但我们在SQL中直接传送字符串就失败。
    我们想在perl中直接写数据另外:结束后如何把我的分给你?
      

  5.   

    可以建个存储过程来保存数据。但oracle的varchar2类型的参数最大长度为32K,这不知道能否满足你的应用。perl我不了解。