在Oracle中,如何将一张表中的long字段的数据插入到另一张表中的clob的字段中 

解决方案 »

  1.   

    insert into table_clob select to_lob(long_col)... from table_long;
    注意to_lob函数只能用在select语句中,所以你的设法构造成select语句。
      

  2.   

    执行存储过程的时候报错: 
    ORA-00997: 非法使用 LONG 数据类型 
    ORA-06512: 在 "HN1W.PRO_INTOCONTENT", line 7 
    ORA-06512: 在 line 3 View program sources of error stack?存储过程如下: 
    create or replace procedure Pro_intoContent is begin   insert into tf_content 
        (CONTENT_ID, 
        CREATE_TIME, 
        MOOD_ICON, 
        TITLE, 
        CONTENT        --clob类型 
        ) 
        SELECT hn_content.nextval, 
              ISSUEDATE, 
              DIRECTORY, 
              MSGTITLE,            
              TO_LOB(MSGCONTENT)    --long类型      
        FROM CSMESSAGE@hnold;  --dblink end Pro_intoContent; 
      

  3.   

      insert into tf_content 
        (CONTENT_ID, 
        CREATE_TIME, 
        MOOD_ICON, 
        TITLE, 
        CONTENT        --clob类型 
        ) 
        SELECT hn_content.nextval, 
              ISSUEDATE, 
              DIRECTORY, 
              MSGTITLE,            
              TO_LOB(MSGCONTENT)    --long类型      
        FROM CSMESSAGE@hnold;  --dblink 
    看一下这个语句是否能运行通过,如果可以写在存储过程也是OK的啦!
    ORA-00997 illegal use of LONG datatypeCause: A value of datatype LONG was used in a function or in a DISTINCT, WHERE, CONNECT BY, GROUP BY, or ORDER BY clause. A LONG value can only be used in a SELECT clause.Action: Remove the LONG value from the function or clause.
      

  4.   

    也是不行
    还是报同样的错误。
    ORA-00997: 非法使用 LONG 数据类型
      

  5.   

    dblink 不能使用to_lob -----这个问题怎么解决还有没有其他办法。
      

  6.   

    改成同义词,还是不行。
    ORA-00997: 非法使用 LONG 数据类型 
      

  7.   

    http://www.cnblogs.com/songsh96/archive/2007/09/05/882587.html
    文章是提出质疑的,没有解决LZ的问题。
    介于不能是用link,是否考虑导出,导入后,在使用to_lob。
      

  8.   

    在本机建一临时表create table tmp
    (
           t01   INT
           ,t02  nvarchar2(2000)
    )然后
    insert into tmp select id,to_lob(long字段) from 表接着在用临时表转过去
    看看行不行?
      

  9.   


    在本机用to_lob是可以的,但是我是要在远程的数据库获取long中的数据。