Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Oracle. Ошибка ORA-06502. Как избавится?   Найти похожие ветки 

 
SergP ©   (2006-11-13 13:04) [0]

В чем может быть причина такой ошибки?

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

И где можно увеличить этот character string buffer?


 
Sergey13 ©   (2006-11-13 13:10) [1]

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.


 
Desdechado ©   (2006-11-13 13:14) [2]

s VARCHAR2(10):="123456789012345";


 
SergP ©   (2006-11-13 13:27) [3]

Понял...
Теперь как бы найти в каком месте это происходит, а то процедура большая, а в логе выводится только номер строки где raise стоит...


...
  EXCEPTION
     WHEN OTHERS
     THEN
        RAISE;
  END;


 
Sergey13 ©   (2006-11-13 13:30) [4]

> [3] SergP ©   (13.11.06 13:27)

В PL/SQL Developere например есть отладчик процедур.


 
Desdechado ©   (2006-11-13 13:32) [5]

смысл такого
EXCEPTION
    WHEN OTHERS
    THEN
       RAISE;
 END;

обработчика?
без него тебе бы и строку показало


 
ANB ©   (2006-11-13 13:34) [6]


> SergP ©   (13.11.06 13:27) [3]

Хех. Известный косяк. Сохраняй на всех перехватах исключений ее трассировку. так сможешь найти место ошибки. И сделай все варчаровые переменные подлиннее. Оракл сильно от этого не напряжется. Кстати, возможный вариант, из-за чего может появится ошибка :
имеем S varchar2(10). S := "Вася123456"; На 10-ке (XE) вполне вероятна ошибка невлезания, т.к. русские буквы занимают по 2 байта. Лечится заменой varchar2(10) на varchar2(10 char)


 
SergP ©   (2006-11-13 13:49) [7]

Спасибо... Убрал этот обработчик и нашел где...


 
Desdechado ©   (2006-11-13 13:52) [8]

> русские буквы занимают по 2 байта
Это если NVARCHAR2 пытаться туда запихнуть. Или нет?


 
SergP ©   (2006-11-13 14:01) [9]

> [8] Desdechado ©   (13.11.06 13:52)
> > русские буквы занимают по 2 байта
> Это если NVARCHAR2 пытаться туда запихнуть. Или нет?


там оказалось что не с русскими буквами связано, а с цифрами...
видимо число не влазило в

v_n_reg_sa         VARCHAR2 (20)  := NULL;

увеличил на глаз до 24. Теперь работает.


 
ANB ©   (2006-11-13 14:15) [10]


> Это если NVARCHAR2 пытаться туда запихнуть. Или нет?

Не. Просто константу. Причем на 9-ке с этим проблем не было.


 
SergP ©   (2006-11-13 15:24) [11]

> [9] SergP ©   (13.11.06 14:01)
>
> увеличил на глаз до 24. Теперь работает.


Блин. Разработчики редиски... Сегодня прислали версию, вместо той что раньше прислали... Посмотрел, а они там уже сами увеличили размеры переменных. А я часа 1,5-2 потратил на поиск этих "багов"....


 
Desdechado ©   (2006-11-13 16:09) [12]

разработчиков [5] - строем за метлами

> Не. Просто константу. Причем на 9-ке с этим проблем не было.
В какой кодировке создавалась БД? В какой кодировке схема? Может, умолчания изменились?


 
k2 ©   (2006-11-13 16:12) [13]

Desdechado ©   (13.11.06 16:09) [12]
для nls_length_semantics умолчание изменилось вроде:
в 9-ке-char, в 10-ке-byte


 
ANB ©   (2006-11-13 16:13) [14]


> Desdechado ©   (13.11.06 16:09) [12]

ЭЭЭЭ. Просто пнули XE она сама все поставила. Не задавая лишних вопросов. Хотя, в принципе, указание размерности никому не мешает, зато код будет работать при любой настройке базы.


 
Игорь Шевченко ©   (2006-11-13 16:26) [15]


> Хотя, в принципе, указание размерности никому не мешает,
>  зато код будет работать при любой настройке базы.


А вот гады пишут, что лучше nls_length_semantics устанавливать, а саму семантику в объявлениях только при крайней нужде менять. Оно говорят портабельнее получается. Домены бы в Оракл - цены б ему не было.


 
Desdechado ©   (2006-11-13 16:32) [16]

Да, доменов мне не хватает...

k2 ©   (13.11.06 16:12) [13]
На своей 9-ке проверил (умолчания не трогали) - BYTE. И на линухе, и на выни.


 
k2 ©   (2006-11-13 16:35) [17]

Desdechado ©   (13.11.06 16:32) [16]
знач наврала сорри, у меня это запросто :)


 
ANB ©   (2006-11-13 16:43) [18]


> Desdechado ©   (13.11.06 16:32) [16]

Не, это из-за кодировки. Почему то в XE по дефолту полуторнобайтовая кодировка врублена (не помню как она называется, однако dump хорошо это показывает).


 
Игорь Шевченко ©   (2006-11-13 17:21) [19]

ANB ©   (13.11.06 16:43) [18]


> Почему то в XE по дефолту полуторнобайтовая кодировка врублена


А это я вполне могу вечером посмотреть, стоит XE с кодировкой по умолчанию. XE юникодный (XEUniv)


 
Игорь Шевченко ©   (2006-11-13 22:55) [20]

В XE без всяких исправлений, как было, так и встало.

NLS_LANGUAGE               AMERICAN
     
NLS_TERRITORY              AMERICA
         
NLS_CURRENCY               $      
                                 
NLS_ISO_CURRENCY           AMERICA
         
NLS_NUMERIC_CHARACTERS     .,    
         
NLS_CHARACTERSET           AL32UTF8
         
NLS_CALENDAR               GREGORIAN
         
NLS_DATE_FORMAT            DD-MON-RR
         
NLS_DATE_LANGUAGE          AMERICAN
         
NLS_SORT                   BINARY
         
NLS_TIME_FORMAT            HH.MI.SSXFF AM
         
NLS_TIMESTAMP_FORMAT       DD-MON-RR HH.MI.SSXFF AM
         
NLS_TIME_TZ_FORMAT         HH.MI.SSXFF AM TZR
         
NLS_TIMESTAMP_TZ_FORMAT    DD-MON-RR HH.MI.SSXFF AM TZR
         
NLS_DUAL_CURRENCY          $
         
NLS_COMP                   BINARY
         
NLS_LENGTH_SEMANTICS       BYTE
         
NLS_NCHAR_CONV_EXCP        FALSE
         
NLS_NCHAR_CHARACTERSET     AL16UTF16
         
NLS_RDBMS_VERSION          10.2.0.1.0


 
ANB ©   (2006-11-14 10:37) [21]

NLS_CHARACTERSET           AL32UTF8
NLS_LENGTH_SEMANTICS       BYTE
NLS_NCHAR_CHARACTERSET     AL16UTF16

Вот эти параметры намекают мне, что у тебя по идее должна быть такая же проблема, если явно не указать размерность char


 
Игорь Шевченко ©   (2006-11-14 11:09) [22]

ANB ©   (14.11.06 10:37) [21]


> Вот эти параметры намекают мне, что у тебя по идее должна
> быть такая же проблема, если явно не указать размерность
> char


Безусловно. Я указываю char в объявлении полей, когда допускаю, что в полях будут находиться символы, отличные от #0-#127, а гады говорят, что надо устанавливать nls_length_semantics для базы, а в объявлениях ничего не трогать.


 
ANB ©   (2006-11-14 11:18) [23]


> Игорь Шевченко ©   (14.11.06 11:09) [22]

Уй млин. А мы в базе не стали указывать. Только в хранимках. Хотя я просто все символьные поля, кроме особых случаев, сделал по 4000 байт и забил. Так что по идее влезет все.


 
ANB ©   (2006-11-14 11:19) [24]


> а гады говорят, что надо устанавливать nls_length_semantics
> для базы

А где ты это накопал ?


 
Игорь Шевченко ©   (2006-11-14 11:45) [25]

ANB ©   (14.11.06 11:18) [23]


> Хотя я просто все символьные поля, кроме особых случаев,
>  сделал по 4000 байт и забил. Так что по идее влезет все.
>


А если бы лимит в Оракле был на 30000 байт ? :)


> А где ты это накопал ?


В доке, вестимо

"The BYTE and CHAR qualifiers override the semantics specified by the NLS_LENGTH_SEMANTICS parameter, which has a default of byte semantics. For performance reasons, Oracle recommends that you use the NLS_LENGTH_SEMANTICS parameter to set length semantics and that you use the BYTE and CHAR qualifiers only when necessary to override the parameter"

"Oracle® Database SQL Reference
10g Release 1 (10.1)
Part Number B10759-01"


 
ANB ©   (2006-11-14 11:57) [26]


> А если бы лимит в Оракле был на 30000 байт ? :)

Ну и сделал бы столько :) На размер БД это не влияет. Они же варчаровые.

Спасибо за ссылку.


 
Игорь Шевченко ©   (2006-11-14 12:16) [27]


> Ну и сделал бы столько :) На размер БД это не влияет. Они
> же варчаровые.


Наверное ты Celko не читал...А зря, он как раз очень аргументированно возражает против такого бездумного назначения максимального размера полям.
Рекомендую: http://www.mini-mag.ru/?cid=2170&tov=163372


 
ANB ©   (2006-11-14 12:20) [28]


> Рекомендую: http://www.mini-mag.ru/?cid=2170&tov=163372

Тьфу, млин. Это ссылка на магазин.
Звиняйте - у меня свой авторитет есть :) Тем более он рулил проектом и я у него и спросил - делать так или не надо. Индексы составные поругались поначалу, он размер блока побольше сделал - и всех делов :)


 
k2 ©   (2006-11-14 12:24) [29]

и мы даже знаем кто :)
только Селко наверное тож пару раз проектами рулил :)


 
Игорь Шевченко ©   (2006-11-14 12:59) [30]

ANB ©   (14.11.06 12:20) [28]


> Звиняйте - у меня свой авторитет есть :) Тем более он рулил
> проектом и я у него и спросил - делать так или не надо.
>


Авторитет авторитету люпус эст.


> Индексы составные поругались поначалу, он размер блока побольше
> сделал - и всех делов :)


Особенно в SQL*Plus удобно запросы с такими полями делать...


 
ANB ©   (2006-11-14 13:04) [31]


> Особенно в SQL*Plus удобно запросы с такими полями делать.
> ..

Я тоадом пользуюсь. он под ширину данных ширину колонки подгоняет


 
Игорь Шевченко ©   (2006-11-14 13:12) [32]

ANB ©   (14.11.06 13:04) [31]


> Я тоадом пользуюсь. он под ширину данных ширину колонки
> подгоняет


если там пара сотен тысяч записей...

Кроме того, извини, когда жаба будет поставляться в дистрибутиве оракла, тогда имеет смысл говорить, что ты ей пользуешься и всем рекомендуешь. Тора, она хоть бесплатная, но тормозная, а жаба денег стоит и потому давит.
Вот и остается SQL*Plus


 
ANB ©   (2006-11-14 15:48) [33]


> Вот и остается SQL*Plus

Есть еще pl/sql девелопер, склнафигатор (жуткая гадость).
А разве жаба платная ?


 
Игорь Шевченко ©   (2006-11-14 16:18) [34]

ANB ©   (14.11.06 15:48) [33]


> А разве жаба платная ?

Вообще-то да. Как и PL/SQL Developer.

Про жабу интересно написано:
"The Toad Freeware version may be used for a maximum of five (5) users within Licensee"s organization and expires each sixty (60) days, after which you will need to download and install the product again"
http://www.toadsoft.com/lic_agree.html

Насколько я знаю, бесплатная TORA ну и SQL*Plus :)


 
k2 ©   (2006-11-14 16:40) [35]

ANB ©   (14.11.06 13:04) [31]
Андрей, а твоя жаба оракловые пакеты понимает на десятке? и какая тогда версия?


 
Val ©   (2006-11-14 17:02) [36]

>[15] Игорь Шевченко ©   (13.11.06 16:26)
>..Домены бы в Оракл - цены б ему не было.
да вроде %TYPE неплохо справляется...


 
ANB ©   (2006-11-14 17:08) [37]


> Вообще-то да. Как и PL/SQL Developer.

Млин. А я и не знал. Фришную версию не ставлю - она кривая. А так у меня ключ есть. Пока подходит.


> Андрей, а твоя жаба оракловые пакеты понимает на десятке?
>  и какая тогда версия?

Старая жаба вообще отказалась работать с 10-кой. Ща у меня 8-я версия. Вроде проблем нету особых. Нарывался на глюк в 9-ке - здоровые пакеты с отладкой не хотели компиляться. Пришлось их девелопером компилять.


 
k2 ©   (2006-11-14 17:20) [38]

у меня 8.0.0.47 категорически отказывается просматривать в 10-ке процедуры , функции и спецификацию пакета, хотя боди и просматривает и редактировать и компилить пожалуйста, такая загогулина :-/


 
ANB ©   (2006-11-14 17:30) [39]


> k2 ©   (14.11.06 17:20) [38]

Упс. И у меня такой же. Хотя я на живой 10-ке его не гонял - только на XE. Свежее версии нету ? Вполне возможно, что в этой не выгребли все баги. Таки 7-ка вообще не умела работать с ораклом 10, даже XE.


 
k2 ©   (2006-11-14 17:36) [40]

у меня 10.2.0.2
кстати если прихъодилось жабу под mssql-ем гонять пристойно себя ведет?



Страницы: 1 2 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.03 c
15-1169030119
kaZaNoVa
2007-01-17 13:35
2007.02.04
Как замедлить интернет-соединение?


2-1168983706
Vovan #2
2007-01-17 00:41
2007.02.04
Туплю с GlobalAlloc


1-1165824158
ZFS
2006-12-11 11:02
2007.02.04
MDI-приложение


2-1169076569
Альберт
2007-01-18 02:29
2007.02.04
перерисовка с прозрачностью


6-1156510127
DVM
2006-08-25 16:48
2007.02.04
WinSock и ProxyServer. Правильная форма HTTP запроса