我正在尝试执行此查询:
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 或类似的缓冲区。由于您没有显示主机代码,因此无法确定确切的违规字段。
关于sql - 如何解决错误 : ORA-01406 fetched column value was truncated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190584/