Как устранить ошибку: извлеченное значение столбца 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 или что-то подобное. Так как вы не показываете код хоста, не можете определить точное поле обидчика.

Другие вопросы по тегам