Как устранить ошибку: извлеченное значение столбца ORA-01406 было усечено?
Я пытаюсь выполнить этот запрос:
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
который является большим числом. Кто-нибудь может дать какое-либо решение, как я могу выполнить этот запрос?
1 ответ
В документации Oracle говорится об этом коде ошибки:
"Причина: в программе на языке хоста операция FETCH была вынуждена усечь строку символов. Область буфера программы для этого столбца была недостаточно большой, чтобы содержать всю строку. Код возврата курсора из выборки был +3.
Действие: Увеличьте область буфера столбца, чтобы он содержал наибольшее значение столбца, или выполните другую подходящую обработку. ORA-01406 выбрасывается, когда FETCH был вынужден усечь имя столбца или строку символов в программах на языке хоста. ORA-01406 вызвано областью буфера программы столбца, которая недостаточно велика для хранения строки целиком, а код возврата курсора +3."
Таким образом, более чем вероятно, у вас есть определенная переменная, которая меньше по размеру, чем то, что запрос возвращает для определенного столбца. Например, вы можете возвращать значение varchar2(100) в буфер размером 50 или что-то подобное. Так как вы не показываете код хоста, не можете определить точное поле обидчика.