估计用sql语句就有些困难了吧,你可能通过存储过程来进行,用dbms_lob来读取文件中的数据,这样就不会出现这样的问题。

解决方案 »

  1.   

    在sql语句实现不行,在存储过程中用dbms_lob来实现
      

  2.   

    我的数据不是文件,只是一个很长的字符串。
    我是在把一堆html代码insert到表的时候出现问题的。
    多谢!
      

  3.   

    create or replace procedure p_test_clobInsert is
    v_content clob;
    i integer;
    begin
      v_content:='Number is :';
      for i in 1..3000 loop
         v_content:=v_content||i||',';
      end loop;
      insert into test_clob values (1,v_content);
      commit;
    end p_test_clobInsert;
      

  4.   

    DECLARE 
       v_bfile  BFILE; 
       v_clob   CLOB; 
    BEGIN 
       INSERT INTO tab1 (col1) 
       VALUES (empty_clob()) 
       RETURN col1 INTO v_clob; 
      
       v_bfile := BFILENAME('DOCUMENTS', 'x1.txt'); 
       Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly); 
       Dbms_Lob.Loadfromfile(v_clob, v_bfile, Dbms_Lob.Getlength(v_bfile)); 
       Dbms_Lob.Fileclose(v_bfile); 
      
       COMMIT; 
    END;
      

  5.   

    创建表:
    create table test(id number,text clob);创建存储过程:
    CREATE OR REPLACE PROCEDURE p_In_Clob(pId IN NUMBER,outVar IN VARCHAR2)
    IS
      text_Var  CLOB;
      amount_Var  NUMBER;
      offset_Var  NUMBER;
    BEGIN
      INSERT INTO test VALUES(pId,empty_clob());
      SELECT text INTO text_var FROM test
        WHERE id=pId;
      amount_var:=LENGTH(outVar);
      offset_var:=1;
      DBMS_LOB.WRITE(text_Var,amount_Var,offset_Var,outVar);
      COMMIT;
    END p_In_Clob;调用存储过程:
    begin
      p_In_Clob(1,'...');
    end;