我从Mysql 导入到oracle数据表,以前的Mysql用的text类型的变成clob类型,
我想把现在oracle中clob类型改成varchar,不成功,在 10.2G的里面不行,数据库表中已经有数据了

解决方案 »

  1.   

    1、新增一列varchar2类型,varchar2类型最大4000:alter table test add(c varchar2(4000));
    2、将clob列数据更新到新增列:update test set c=clob_col;
    3、删除clob列:alter table test drop column clob_col;
    4、将新增列名更改回原来列名:alter table test rename column c to clob_col;
      

  2.   

    CREATE OR REPLACE FUNCTION clob_to_varchar(data CLOB) RETURN VARCHAR2 IS
    buffer VARCHAR2(4000);
    amt BINARY_INTEGER := 4000;
    position INTEGER := 1;
    l_var VARCHAR2(4000):='';
    BEGIN
       LOOP
       IF dbms_lob.getlength(data)<=4000 THEN
          dbms_lob.READ (data, amt, position, buffer);
          l_var := l_var||buffer;
          position:=position+amt;
       ELSE
          l_var:= 'Cannot convert to varchar2..Exceeding varchar2 field limit';
          EXIT;
       END IF;
       END LOOP;
       RETURN l_var;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
       RETURN l_var;
    END;
    这是高手给我写的程序,但是clob_to_varchar(data CLOB)中的data CLOB是什么参数
      

  3.   

    如果在PL/SQL DEV中直接改是不行的,先删除Clob,保存,再修改,成功。基本上和2楼一样的