2013-08-12 12 views
2

Я пытаюсь выполнить этот запрос:Как решить ошибку: 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

Просьба показать определение таблицы. Какой язык/фрейм вы используете для выполнения запроса и получения результатов? PLease также показывает этот код. – OldProgrammer

ответ

4

оракула документов заявляет это о коде ошибки:

«Причина: В программе языкового хозяина, FETCH операция была вынуждена усечь строку символов область буфера программы для этого столбца не была достаточно большой, чтобы. содержащую всю строку. Код возврата курсора из выборки был равен 0.

Действие: Увеличьте буферную область столбца, чтобы сохранить наибольшее значение столбца или выполнить другую соответствующую обработку. ORA-01406 выбрасывается, когда FETCH был принудительно для усечения имени столбца или символьной строки в программах на языке хоста. ORA-01406 вызван областью буферного пространства столбца, которая недостаточно велика, чтобы удерживать строка целиком, а код возврата курсора - +3. "

Таким образом, более вероятно, что у вас есть определенная переменная, размер которой меньше по размеру, чем запрос, возвращаемый для определенного столбца. Например, вы можете возвращать значение varchar2 (100) в буфер размером 50 или что-то подобное. Поскольку вы не показываете код хоста, не можете определить точное поле нарушения.

 Смежные вопросы

  • Нет связанных вопросов^_^