我正在尝试执行这个查询:
select *
from gi_todo_isim
WHERE d_insercao >= '04-JUL-13'
AND d_insercao <= '25-JUL-13'
然而,我得到了这个错误:
ORA-01406 fetched column value was truncated
如果我尝试计算存在多少列:
select count(*)
from gi_todo_isim
WHERE d_insercao >= '04-JUL-13'
AND d_insercao <= '25-JUL-13'
答案是1661597
这是一个很大的数字。任何人都可以提供任何解决方案如何执行此查询?
Oracle 文档对此错误代码进行了说明:
“原因:在主机语言程序中,FETCH 操作被迫截断字符串。该列的程序缓冲区不够大,无法容纳整个字符串。获取的游标返回代码为 +3。
操作:增加列缓冲区以保存最大列值或执行其他适当的处理。
当 FETCH 被迫截断宿主语言程序中的列名或字符串时,会引发 ORA-01406。 ORA-01406是由于该列的程序缓冲区不够大,无法容纳完整的字符串,而游标返回码是+3。”
因此,您定义的变量很可能比查询为特定列返回的变量小。例如,您可能会将 varchar2(100) 值返回到大小为 50 的缓冲区或类似的值。由于您没有显示主机代码,因此无法确定确切的违规字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)