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: 仅可以为插入 LONG 列的 LONG 值赋值”
使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查。使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查 使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查
oracle数据库ora-01152和ora-01110的解决办法
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法
Drop goldengate用户时,报ORA-00604 ORA-20782 ORA-06512错误
oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht
ORACLE ORA-00132 ORA-00214
oracle启动失败,ORA-00702报错,windows,linux系统下解决办法
客户端进行连接的时候,系统不定期出现ora-12520,ora-12516的连接问题, 问题解决方案建议: 1、增加process和session的连接数。 2、检查连接的应用,是不是有没有释放的连接。 3、将修改参数local_listener中的vip为...
OGG之ORA-01403案例,包括这个案例所遇到的错误详解,对使用的参数进行了详细的解说
离线误删空间文件导致的ORA-01033及ORA-01145问题的解决办法,在解决ORA-01033的过程中,又出现ORA-01145 * 第 1 行出现错误: ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机 接着的解决步骤
ORA-12541 TNSno listener 的解决方案 ORA-12541 TNSno listener 的解决方案
ora-00845
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
oracle数据库优化之后,报错报错“ora-00838”的处理方法
在运行查询SELECT * FROM V$SESSION 会出现ORA-29275:部分多字节字符的错误,这是什么原因开始我不得其解,网上也没有介绍什么好办法。本文给出答案。
ORA-20011,ORA06564错误分析
Oracle Database on Linux Fails to Start - ORA-27154 ORA-27300 ORA-27301 ORA-27302: failure occurred at: sskgpbitsper (Doc ID 2789636.1)