`
weiwuwen
  • 浏览: 41901 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle插入/更新CLOB字段报ORA-01704:字符串文字太长【解决方案】

阅读更多

最近遇到了一个这样的问题,在对Oracle数据库插入或者更新CLOB字段的时候,直接拼接了一个INSERT INTO和UPDATE语句,类似下面这种:

INSERT INTO 表名(字段1, 字段2, CLOB字段)  VALUES ('XX', 'XXX', '内容非常多');
UPDATE 表名 T SET T.CLOB字段名 = '内容非常多';

 在执行SQL的时候报了[ORA-01704:字符串文件太长]的错误,如下图所示:

以上SQL语法没有任何问题,但是如果CLOB字段的内容非常大的时候,会导致SQL语句过长,我认可网上的这个说法:隐式转换,oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,所以会报ora-01704错误。说得通俗一点,就是两个单引号之间的字符不能超过4000。

遇到这个问题,可以使用PL/SQL语法,采取绑定变量的方式解决,而不是直接拼接SQL,例如:

DECLARE
  clobValue 表名.字段名%TYPE;
BEGIN
  clobValue := 'XXX'; --字段内容
  UPDATE 表名 T SET T.字段名 = clobValue WHERE 条件;
  COMMIT;
END;
/
注:END;末尾加“/”的意思是执行这段PL/SQL代码,如果多个PL/SQL代码需要同时执行,末尾必须加上该符号。
  • 大小: 7.4 KB
分享到:
评论

相关推荐

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

    然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-01704: 文字字符串过长”的错误。这个错误通常意味着你试图插入的字符串超过了Oracle数据库允许的最大长度,对于VARCHAR2类型...

    ORA-01461 仅可以为插入 LONG 列的 LONG 值赋值”解决办法

    ORA-01461 错误是 Oracle 数据库中的一种常见错误,错误信息为“仅可以为插入 LONG 列的 LONG 值赋值”。该错误通常是由于 Oracle 的 jar 包版本与 Oracle 数据库实际版本不匹配造成的。 在了解 ORA-01461 错误解决...

    向Oracle数据库的CLOB属性插入数据报字符串过长错误

    今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误。 网上说用流来处理,没有这么做。这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了。 下面是这段代码: if(...

    运用Java如何存取Oracle中的CLOB类型字段

    这里需要注意的是,连接字符串必须正确配置,通常格式为`jdbc:oracle:thin:@hostname:port/servicename`,其中`hostname`、`port`和`servicename`需根据实际数据库环境进行设置。 #### 3. 插入CLOB数据 插入CLOB...

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

    例如,直接插入一个长字符串会因超出VARCHAR2的限制而失败,报 ora-01704 错误。正确的方法是使用PL/SQL的绑定变量技术,如下所示: ```sql DECLARE V_LANG CLOB := '待插入的海量字符串'; V_UPDATE CLOB := '...

    Oracle数据库学习日记

    ### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect 数据库连接命令** - **Connect**: 使用 `connect` 命令可以连接到Oracle数据库。语法通常为 `connect ...

    Oracle数据库学习日记-实用性最强的Oracle学习总结.docx

    ### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect 数据库连接命令** - **Connect**: 使用 `connect` 命令可以连接到Oracle数据库。语法通常为 `connect ...

    oracle 实际值超过数据库某个字段指定长度报错解决

    当尝试插入或更新的数据超过了该字段的长度限制时,Oracle会抛出错误`ORA-01438`,提示“value larger than specified precision allowed for this column”,即实际值的长度超出了该列允许的最大精度。这个错误通常...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...

    Oracle_11g_JDBC_ojdbc6.rar

    5. 使用PreparedStatement:使用预编译的SQL语句可以避免字符串拼接导致的错误。 关于"jar包冲突"的问题,这可能是因为项目中同时引入了多个版本的ojdbc驱动,或者与其他数据库驱动产生了冲突。解决冲突的方法有: ...

    Oracle9i的init.ora参数中文说明

    值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: BINARY nls_currency: 说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    oracle系统内置函数大全

    3. CONCAT函数:将两个字符串拼接起来,如果第一个字符串为NULL,则返回第二个字符串;如果第二个字符串为NULL,则返回第一个字符串。 4. INITCAP函数:将字符串中的每个单词的首字母转换为大写,其余字母转换为小写...

    详解Oracle修改字段类型方法总结

    例如,处理`CLOB`字段的查询性能问题、PHP处理`CLOB`的实例、插入和更新`CLOB`数据时的字符串长度限制,以及对超长数据的存储等,这些都是Oracle数据库管理中常见的问题,需要针对性地学习和掌握相应的解决方案。...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    3.支持任意字符串作为每行分隔符,例如\r,\r\n,或者十六进制字符或任意指定的字符串(例如可实现把整个日志文件装入数据库的单个clob字段). 4.支持任意大小的文本,装入几十GB都试过没问题。 5.明确到每一行的错误信息....

    Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据

    在Java开发中,当需要与Oracle数据库交互时,特别是涉及到XML数据的存储,XMLType是Oracle提供的一种专门用于存储XML格式数据的类型。本文将详细探讨如何使用Java的JDBC和MyBatis框架来处理Oracle中的XMLType数据。 ...

Global site tag (gtag.js) - Google Analytics