![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oracle. Ошибка ORA-06502. Как избавится?
SergP © (2006-11-13 13:04:00)В чем может быть причина такой ошибки?
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
И где можно увеличить этот character string buffer?
ANB (2006-11-13 16:13:00) [41]
> Desdechado © (13.11.06 16:09) [12]
ЭЭЭЭ. Просто пнули XE она сама все поставила. Не задавая лишних вопросов. Хотя, в принципе, указание размерности никому не мешает, зато код будет работать при любой настройке базы.
k2 (2006-11-13 16:12:00) [42]Desdechado © (13.11.06 16:09) [12]
для nls_length_semantics умолчание изменилось вроде:
в 9-ке-char, в 10-ке-byte
Desdechado (2006-11-13 16:09:00) [43]разработчиков [5] - строем за метлами
> Не. Просто константу. Причем на 9-ке с этим проблем не было.
В какой кодировке создавалась БД? В какой кодировке схема? Может, умолчания изменились?
SergP (2006-11-13 15:24:00) [44]> [9] SergP © (13.11.06 14:01)
>
> увеличил на глаз до 24. Теперь работает.
Блин. Разработчики редиски... Сегодня прислали версию, вместо той что раньше прислали... Посмотрел, а они там уже сами увеличили размеры переменных. А я часа 1,5-2 потратил на поиск этих "багов"....
ANB (2006-11-13 14:15:00) [45]
> Это если NVARCHAR2 пытаться туда запихнуть. Или нет?
Не. Просто константу. Причем на 9-ке с этим проблем не было.
SergP (2006-11-13 14:01:00) [46]> [8] Desdechado © (13.11.06 13:52)
> > русские буквы занимают по 2 байта
> Это если NVARCHAR2 пытаться туда запихнуть. Или нет?
там оказалось что не с русскими буквами связано, а с цифрами...
видимо число не влазило в
v_n_reg_sa VARCHAR2 (20) := NULL;
увеличил на глаз до 24. Теперь работает.
Desdechado (2006-11-13 13:52:00) [47]> русские буквы занимают по 2 байта
Это если NVARCHAR2 пытаться туда запихнуть. Или нет?
SergP (2006-11-13 13:49:00) [48]Спасибо... Убрал этот обработчик и нашел где...
ANB (2006-11-13 13:34:00) [49]
> SergP © (13.11.06 13:27) [3]
Хех. Известный косяк. Сохраняй на всех перехватах исключений ее трассировку. так сможешь найти место ошибки. И сделай все варчаровые переменные подлиннее. Оракл сильно от этого не напряжется. Кстати, возможный вариант, из-за чего может появится ошибка :
имеем S varchar2(10). S := 'Вася123456'; На 10-ке (XE) вполне вероятна ошибка невлезания, т.к. русские буквы занимают по 2 байта. Лечится заменой varchar2(10) на varchar2(10 char)
Desdechado (2006-11-13 13:32:00) [50]смысл такого
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END;
обработчика?
без него тебе бы и строку показало
Sergey13 (2006-11-13 13:30:00) [51]> [3] SergP © (13.11.06 13:27)
В PL/SQL Developere например есть отладчик процедур.
SergP (2006-11-13 13:27:00) [52]Понял...
Теперь как бы найти в каком месте это происходит, а то процедура большая, а в логе выводится только номер строки где raise стоит...
...
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END;
Desdechado (2006-11-13 13:14:00) [53]s VARCHAR2(10):='123456789012345';
Sergey13 (2006-11-13 13:10:00) [54]ORA-06502 PL/SQL: numeric or value errorstring
An arithmetic, numeric, string, conversion, or constraint error occurred. For example, this error occurs if an attempt is made to assign the value NULL to a variable declared NOT NULL, or if an attempt is made to assign an integer larger than 99 to a variable declared NUMBER(2).
Change the data, how it is manipulated, or how it is declared so that values do not violate constraints.