oracle10.2.0.4版本
字符变量(比如v_mail_tmp)超过4000字节,即使是将substr(v_mail_tmp,1,1333)插入一个VARCHAR2(4000)的字段,该表只有一个4000的字段
也会报ORA-01461,can bind a LONG value only for insert into a LONG column
最后的解决办法是定义一个varchar2(4000)的变量v_CONTENT,做一次赋值v_CONTENT:=substr(v_mail_tmp,1,1333),再将v_CONTENT插入表就不报错了
原因估计是超过4000后,当作long型处理,做substr,long型未变导致无法插入,而赋值给varchar2(4000)的变量可以将类型强制转回来
验证这个想法
SQL> create table ta (t1 varchar2(4000));
Table created
SQL> declare
2 v_tmp varchar2(10000);
3 begin
4 v_tmp:='1';
5 insert into ta (t1)values(v_tmp);
6 end;
7 /
PL/SQL procedure successfully completed
SQL> select * from ta;
T1
--------------------------------------------------------------------------------
1
SQL> declare
2 v_tmp varchar2(10000);
3 v_tmp1 varchar2(4000);
4 begin
5 for i in 1..5000 loop
6 v_tmp:=v_tmp||'1';
7 end loop;
8 insert into ta (t1)values(substr(v_tmp,1,1));
9 end;
10 /
declare
v_tmp varchar2(10000);
v_tmp1 varchar2(4000);
begin
for i in 1..5000 loop
v_tmp:=v_tmp||'1';
end loop;
insert into ta (t1)values(substr(v_tmp,1,1));
end;
ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-06512: at line 9
SQL> declare
2 v_tmp varchar2(10000);
3 v_tmp1 varchar2(4000);
4 begin
5 for i in 1..5000 loop
6 v_tmp:=v_tmp||'1';
7 end loop;
8 v_tmp1:=substr(v_tmp,4000);
9 insert into ta (t1)values(v_tmp1);
10 end;
11 /
PL/SQL procedure successfully completed
分享到:
相关推荐
ORA-01461 错误是 Oracle 数据库中的一种常见错误,错误信息为“仅可以为插入 LONG 列的 LONG 值赋值”。该错误通常是由于 Oracle 的 jar 包版本与 Oracle 数据库实际版本不匹配造成的。 在了解 ORA-01461 错误解决...
### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...
这将确保客户端与服务器端的字符集保持一致,从而减少因字符集不匹配而引发的ORA-01460错误。 ##### Step 3: 考虑数据类型及API使用 在处理二进制流数据时,可能会调用`PreparedStatement`的`...
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
ORA-39070错误提示无法打开日志文件,这可能是因为日志文件所在的目录权限不足或者目录不存在。可以通过以下步骤进行检查: - **确认目录是否存在**:使用`ls`命令查看日志文件所在的目录是否存在。 - **检查目录...
Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
### Oracle12cRAC数据库出现ora-12520, ora-12516问题解析 #### 一、问题概述 在使用Oracle12cRAC(Real Application Clusters)数据库的过程中,可能会遇到客户端连接时出现ora-12520或ora-12516错误的问题。这两...
oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht
在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...
ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法 摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP...
在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$SESSION`时。该错误的出现意味着在查询结果中存在一些多字节字符(通常是...
3. 如果REQUEXT_FAILURES>0并且LAST_FAILURE_SIZE>SHARED_POOL_RESERVED_MIN_ALLOC,那么ORA-04031错误就是因为共享池中保留空间缺少连续空间所致。 4. 解决方法是通过加大SHARED_POOL_RESERVED_MIN_ALLOC来降低缓冲...
然而,在日常运维过程中,我们可能会遇到各种错误,比如“ORA-00702”就是其中之一。这个错误通常在尝试重启Oracle数据库服务时出现,意味着数据库实例在启动过程中遇到了问题。本文将详细介绍如何在Windows和Linux...
通过上述步骤,可以有效地解决由于误删除数据文件而导致的ORA-01033和ORA-01145问题。需要注意的是,在进行任何重要的数据库操作之前,都应该备份相关数据以防止数据丢失。此外,在处理类似问题时,建议在Oracle官方...
OGG 之 ORA-01403 案例分析 本文将对 OGG 之 ORA-01403 案例进行详细的分析,包括出现错误的原因、解决方法、handlecollisions 参数的解析和使用注意事项等。 一、错误原因分析 OGG 之 ORA-01403 案例中,出现了...
在IT领域,尤其是在数据库管理与维护中,遇到ORA-01460错误是常见的问题之一,这通常意味着系统在尝试执行数据转换时遇到了未实现或不合理的请求。本文将深入探讨ORA-01460错误的成因、影响以及提供一系列有效的解决...
### Oracle 10g启动后报ORA-16038错误的解决方法 #### 错误概述 在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be ...
在Oracle数据库管理过程中,遇到ORA-12518错误是较为常见的问题之一。此错误通常发生在客户端试图连接到数据库服务器的过程中,当监听器无法将客户端连接顺利地移交给服务器进程或调度进程时触发。本文旨在详细介绍...