我正在尝试执行此查询:
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
,这是一个很大的数字。任何人都可以提供任何解决方案如何执行此查询?
答案 0 :(得分:4)
Oracle文档说明了错误代码:
“原因:在宿主语言程序中,FETCH操作被强制截断字符串。此列的程序缓冲区大小不足以包含整个字符串。来自fetch的游标返回代码为+3 。
操作:增加列缓冲区以保存最大列值或执行其他适当的处理。 当FETCH被强制截断宿主语言程序中的列名或字符串时,抛出ORA-01406。 ORA-01406是由列的程序缓冲区引起的,该区域的大小不足以完整地保存字符串,而游标返回代码为+3。“
因此,很可能,您定义的变量的大小小于查询为特定列返回的大小。例如,您可能将varchar2(100)值返回到大小为50或类似的缓冲区中。由于您未显示主机代码,因此无法确定确切的违规字段。