Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.38 c
15-1169022430
shikitomedo2
2007-01-17 11:27
2007.02.04
Как распознать на собеседовании неадекватного работодателя?


2-1169382270
Cj
2007-01-21 15:24
2007.02.04
Выделение файла


15-1168698485
Гарри Поттер
2007-01-13 17:28
2007.02.04
Старый Новый год.


1-1165956161
AndreyRu
2006-12-12 23:42
2007.02.04
Сглаживание глифов


2-1168866844
Vlad_Uzegov
2007-01-15 16:14
2007.02.04
A call to an OS function failed





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский