`

把字段类型从VARCHAR2变更为CLOB的方法

阅读更多
   
    自从把数据库字符集变更为UTF8之后,原来VARCHAR2(4000)的字段无法容纳2000个汉字了,于是需要改变数据类型为CLOB。CLOB理论上支持 4G 字节容量。

   

直接执行
 
ALTER TABLE SAMPLE_TBL MODIFY column_name CLOB;

 

会发生类似
 
ORA-22858: 数据类型变更无效。

 

的错误。无法直接把VARCHAR2变更为CLOB类型。

因此,执行以下PL/SQL脚本,成功地把字段的类型从VARCHAR2变更为CLOB。

要是有更简便的方法就好了。
ALTER TABLE SAMPLE_TBL RENAME COLUMN column to column_old;
ALTER TABLE SAMPLE_TBL ADD column CLOB;

DECLARE
  CURSOR cu is SELECT * FROM SAMPLE_TBL;
BEGIN
  FOR cu_rec IN cu LOOP
    UPDATE SAMPLE_TBL SET column = cu_rec.column_old WHERE ID = cu_rec.ID;
  END LOOP;
END;
/

ALTER TABLE SAMPLE_TBL DROP (column_old);

0
5
分享到:
评论
1 楼 houxinyou 2011-01-26  
为什么要用游标呢?直接执行UPDATE SAMPLE_TBL SET column = cu_rec.column_old不行吗?

相关推荐

    mybatis 对clob类型转换

    创建一个实现`org.apache.ibatis.type.TypeHandler`接口的类,重写`setParameter`和`getResult`方法,确保在SQL语句执行前能将Java对象转换为CLOB,执行后又能从CLOB还原为原始数据。 2. **配置MyBatis** 在...

    ORACLE中CLOB字段转String类型

    在Oracle数据库中,将CLOB字段转换为字符串类型是常见需求之一。通过使用`DBMS_LOB`包、内置函数如`SUBSTR`以及`TO_CHAR`,可以有效地实现这一目标。此外,还需注意性能优化措施,例如分段读取和合理设计查询逻辑,...

    数据库中clob类型转换的问题 数据库中clob类型转换的问题

    这段SQL语句尝试将表`T_sbs`中的`clob`字段修改为`VARCHAR2(20)`类型。然而,需要注意的是,在实际操作中直接通过`ALTER TABLE`命令将CLOB字段转换为VARCHAR2可能会遇到以下问题: #### 问题1:数据丢失风险 由于...

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    这个错误通常意味着你试图插入的字符串超过了Oracle数据库允许的最大长度,对于VARCHAR2类型,这个限制是4000个字符;而对于CLOB类型,虽然没有硬性长度限制,但一次PL/SQL语句中的绑定变量值不能超过4000个字符。 ...

    oracle替换wm_concat varchar处理为clob处理的方法

    是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备

    oracle(blob转换为clob)

    接下来,使用`DBMS_LOB.SUBSTR`按块读取BLOB数据,将其转换为`VARCHAR2`类型,再使用`DBMS_LOB.WRITEAPPEND`将转换后的数据写入到CLOB中。最后返回转换后的CLOB数据。 #### 4. 更新表中的数据 在实际应用中,一旦...

    oracle变更数据表字段类型

    - 这个错误通常发生在尝试直接改变字段类型时,特别是在从固定长度的类型(如`VARCHAR2`)转换到变长类型(如`CLOB`)时。 - 解决方案是先创建一个新的字段,然后将旧字段的数据迁移到新字段中,最后删除旧字段...

    向Oracle数据库插入Clob大段文本解决方法

    在实际应用中,当需要存储的文章、报告或者XML文档等文本信息超过常规VARCHAR2类型的限制时,CLOB便成为首选。 ### 二、向Oracle数据库插入Clob大段文本的方法 #### 方法一:使用OracleParameter和ExecuteNonQuery...

    Oracle如何对CLOB行字段来执行全文检索

    Oracle CLOB 行字段全文检索实现方法 Oracle 数据库中,CLOB 行字段是一种常用的数据类型,用于存储大文本数据。然而,在 Oracle8i 版本之前,对大字段 CLOB 仍然不支持在 where 子句直接的 Like 操作。这使得...

    将长于4000字符的字符串转化为CLOB类型存入数据库

    相比于VARCHAR2类型的4000字符限制,CLOB提供了更灵活、更强大的文本数据存储能力。 ### 二、转换字符串为CLOB类型的方法 #### 1. **使用Oracle.NET接口** 在C#中操作Oracle数据库通常会用到Oracle.NET接口,...

    clob 的读存问题

    在Oracle数据库中,CLOB类型的字段可以被看作是一个指向实际存储位置的指针,而数据本身可能存储在数据库的不同物理位置。因此,在进行CLOB数据的读取和写入时,需要通过特定的方法来访问这些数据。 ### Oracle...

    Oracle的CLOB大数据字段类型操作方法

    总结来说,Oracle的CLOB类型是处理大数据字段的关键,它弥补了VARCHAR2类型的不足,为大数据存储提供了可靠的解决方案。在实际开发中,熟练掌握CLOB的使用方法,可以有效地管理大量的文本信息,提高系统的存储效率和...

    varchar 和varchar2之间的联系和区别

    在Oracle数据库中,`VARCHAR`与`VARCHAR2`是两种常见的用于存储可变长度字符串的数据类型。尽管它们在名称上相似,但在实际应用中却存在一定的差异。本文将详细介绍这两种数据类型的特性及其应用场景,帮助读者更好...

    oracle char,varchar,varchar2的区别和使用方法

    ### Oracle CHAR, VARCHAR, VARCHAR2 的区别与使用方法 在 Oracle 数据库中,字符串类型是极为常见的数据类型之一,主要用于存储文本数据。其中最常用的三种类型包括:`CHAR`, `VARCHAR`, 和 `VARCHAR2`。这三种...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    另一种方法是将char类型字段改为varchar2类型。在大多数情况下,varchar2类型是更好的选择,因为它可以存储变长字符串,而char类型只能存储固定长度的字符串。 在使用jdbc查询时,也需要注意char类型字段的特殊性。...

    MSSQL中所有字段类型的区别

    如果一个字段可能的值是不固定长度的,我们只知道它不可能超过 10 个字符,把它定义为 varchar(10) 是最合算的。varchar 类型的实际长度是它的值的实际长度+1,多出来的一个字节用于保存实际使用了多大的长度。 3. ...

    关于oracle中clob字段查询慢的问题及解决方法

    这种方法可以避免直接转换整个CLOB为VARCHAR2,而是只处理部分数据,从而提高查询效率。 另外,Oracle还提供了全文索引(Full-Text Indexing)功能,通过CTXSYS.CONTEXT类型的索引,可以加速对CLOB字段的文本搜索。...

    oracle字段类型转换的处理

    Oracle数据库支持多种数据类型,包括数值类型(如NUMBER、INTEGER、BINARY_FLOAT等)、字符类型(如VARCHAR2、CHAR、CLOB等)、日期时间类型(如DATE、TIMESTAMP等)以及二进制类型(如RAW、BLOB等)。在实际应用中...

Global site tag (gtag.js) - Google Analytics