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

因未自动转换类型而ORA-01461之一例

阅读更多
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
1
1
分享到:
评论

相关推荐

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

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

    ORACLE ORA-00132 ORA-00214

    ### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...

    Drop goldengate用户时报ORA-00604 ORA-20782 ORA-06512问题解决

    ### 解决Drop Goldengate 用户时报ORA-00604 ORA-20782 ORA-06512问题 #### 一、问题背景与现象 在进行Oracle数据库管理过程中,经常会遇到需要删除用户的场景。当尝试执行`drop user goldengate cascade;`命令时,...

    ora-01460 错误原因分析

    这将确保客户端与服务器端的字符集保持一致,从而减少因字符集不匹配而引发的ORA-01460错误。 ##### Step 3: 考虑数据类型及API使用 在处理二进制流数据时,可能会调用`PreparedStatement`的`...

    ora-00604错误解决方法

    ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法

    使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查

    ORA-39070错误提示无法打开日志文件,这可能是因为日志文件所在的目录权限不足或者目录不存在。可以通过以下步骤进行检查: - **确认目录是否存在**:使用`ls`命令查看日志文件所在的目录是否存在。 - **检查目录...

    Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法.pdf

    Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...

    ORA-04052p5731178_92080_WINNT.zip

    ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...

    Oracle12cRAC数据库 出现ora-12520, ora-12516

    ### Oracle12cRAC数据库出现ora-12520, ora-12516问题解析 #### 一、问题概述 在使用Oracle12cRAC(Real Application Clusters)数据库的过程中,可能会遇到客户端连接时出现ora-12520或ora-12516错误的问题。这两...

    oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht

    oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht

    关于创建oracle 连接时报以下错误,ORA-01017 ORA-02063

    在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...

    ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法.pdf

    ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法 摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP...

    如何处理错误ORA-29275:部分多字节字符

    在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$SESSION`时。该错误的出现意味着在查询结果中存在一些多字节字符(通常是...

    Oracle数据库发生ORA-04031错误原因浅析及处理.pdf

    3. 如果REQUEXT_FAILURES>0并且LAST_FAILURE_SIZE>SHARED_POOL_RESERVED_MIN_ALLOC,那么ORA-04031错误就是因为共享池中保留空间缺少连续空间所致。 4. 解决方法是通过加大SHARED_POOL_RESERVED_MIN_ALLOC来降低缓冲...

    oracle重启报错ORA-00702解决办法

    然而,在日常运维过程中,我们可能会遇到各种错误,比如“ORA-00702”就是其中之一。这个错误通常在尝试重启Oracle数据库服务时出现,意味着数据库实例在启动过程中遇到了问题。本文将详细介绍如何在Windows和Linux...

    离线误删空间文件导致的ORA-01033及ORA-01145问题的解决办法

    通过上述步骤,可以有效地解决由于误删除数据文件而导致的ORA-01033和ORA-01145问题。需要注意的是,在进行任何重要的数据库操作之前,都应该备份相关数据以防止数据丢失。此外,在处理类似问题时,建议在Oracle官方...

    OGG之ORA-01403案例

    OGG 之 ORA-01403 案例分析 本文将对 OGG 之 ORA-01403 案例进行详细的分析,包括出现错误的原因、解决方法、handlecollisions 参数的解析和使用注意事项等。 一、错误原因分析 OGG 之 ORA-01403 案例中,出现了...

    Oracle 10g启动后报ORA-16038错误的解决方法

    ### Oracle 10g启动后报ORA-16038错误的解决方法 #### 错误概述 在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be ...

    Oracle_ORA-12518故障_处理

    在Oracle数据库管理过程中,遇到ORA-12518错误是较为常见的问题之一。此错误通常发生在客户端试图连接到数据库服务器的过程中,当监听器无法将客户端连接顺利地移交给服务器进程或调度进程时触发。本文旨在详细介绍...

Global site tag (gtag.js) - Google Analytics