使用sql语句直接插入数据时,对于clob字段,如果插入的数据长度太长,无法插入,请问如何解决?

解决方案 »

  1.   

    用sql? 首先字符串变量最长32K
    如果你用字符串插入的话会受到限制,需要把字符串转换为raw,再append到lob变量中,最后插入.
      

  2.   

    当时我在asp里是这样做的,
    1,我把字符串按大小分开一段段的,然后循环往Oracle里的一个临时表里插入数据,这个临时表结构为,
    create table T_LOB_TMP_TB
    (
      ID     NUMBER,
      S_CLOB CLOB,
      MODEL  NUMBER
    )
    在这个临时表上做一个触发器,
    触发器代码为:
    Create Or Replace Trigger t_insert_lob_trigger
        After Insert On t_lob_tmp_tb
    Declare
        s_clob  Clob;
        d_clob  Clob;
        news_id Number;
        p_model Number;
      Begin
           Select t.s_clob 
                 ,t.id
                 ,t.model
             Into s_clob
                , news_id
                , p_model
             From t_lob_tmp_tb t;
           
           If p_model = 1 Then
             Select n.content 
               Into d_clob
               From tnews n
               Where n.newsid = news_id
               For Update;       
           End If;       
           dbms_lob.append(d_clob,s_clob);
      End;
    虽然比较笨,不过还好用