Sql 如何解决错误:ORA-01406获取的列值被截断?
我正在尝试执行此查询:Sql 如何解决错误:ORA-01406获取的列值被截断?,sql,database,oracle,plsql,sql-navigator,Sql,Database,Oracle,Plsql,Sql Navigator,我正在尝试执行此查询: select * from gi_todo_isim WHERE d_insercao >= '04-JUL-13' AND d_insercao <= '25-JUL-13' 如果我尝试计算存在多少列: select count(*) from gi_todo_isim WHERE d_insercao >= '04-JUL-13' AND d_insercao <= '25-JUL-13' 选择计数(*)
select *
from gi_todo_isim
WHERE d_insercao >= '04-JUL-13'
AND d_insercao <= '25-JUL-13'
如果我尝试计算存在多少列:
select count(*)
from gi_todo_isim
WHERE d_insercao >= '04-JUL-13'
AND d_insercao <= '25-JUL-13'
选择计数(*)
从gi_todo_isim
其中d_inserco>='04-JUL-13'
而d_insercoOracle文档说明了以下有关错误代码的信息:
原因:在宿主语言程序中,提取操作被强制截断字符串。此列的程序缓冲区不够大,无法包含整个字符串。提取的光标返回代码为+3
操作:增加列缓冲区以容纳最大的列值或执行其他适当的处理。
ORA-01406是在强制提取截断主机语言程序中的列名或字符串时引发的。ORA-01406是由于列的程序缓冲区不够大,无法容纳整个字符串,而光标返回代码为+3。”
因此,您很可能定义了一个变量,该变量的大小小于查询针对特定列返回的值。例如,您可能将varchar2(100)值返回到大小为50的缓冲区或类似的缓冲区中。由于未显示主机代码,因此无法确定确切的违规字段。请显示表定义。您使用什么语言/框架来执行查询和获取结果?请同时显示该代码。
select count(*)
from gi_todo_isim
WHERE d_insercao >= '04-JUL-13'
AND d_insercao <= '25-JUL-13'