Форум: "Базы";
Текущий архив: 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-ем гонять пристойно себя ведет?
← →
Игорь Шевченко © (2006-11-14 17:42) [41]k2 © (14.11.06 17:20) [38]
ANB © (14.11.06 17:30) [39]
Кстати фриварная только что скачаная жаба (8.5.0.50g) точно так же не умеет с десяткой работать на предмет процедур/пакетов.
Что интересно - ТОРА умеет. Но Тора глючная и тормозная.
Val © (14.11.06 17:02) [36]
> да вроде %TYPE неплохо справляется...
В какое место в объявлении поля в таблице вставлять %TYPE ?
← →
k2 © (2006-11-14 17:57) [42]Игорь Шевченко © (14.11.06 17:42) [41]
Oracle Developer немножко знает про домены, после генерации на базе это выглядит как табличка cg_ref_codes (сейчас нет дизайнера, не знаю настраивается) вида:
CREATE TABLE <Schema>.CG_REF_CODES
(
RV_DOMAIN VARCHAR2(100) NOT NULL,
RV_LOW_VALUE VARCHAR2(240) NOT NULL,
RV_HIGH_VALUE VARCHAR2(240),
RV_ABBREVIATION VARCHAR2(240),
RV_MEANING VARCHAR2(240),
RV_TYPE VARCHAR2(10)
)
TABLESPACE USERS
LOGGING
NOCACHE
NOPARALLEL;
CREATE INDEX <Schema>.X_CG_REF_CODES_1 ON <Schema>.CG_REF_CODES
(RV_DOMAIN, RV_LOW_VALUE)
LOGGING
TABLESPACE <USERS>
NOPARALLEL;
DROP SYNONYM SGDEVNU1.CG_REF_CODES;
CREATE SYNONYM SGDEVNU1.CG_REF_CODES FOR <Schema>.CG_REF_CODES;
ALTER TABLE <Schema>.CG_REF_CODES ADD (
CONSTRAINT RV_PK PRIMARY KEY (RV_DOMAIN, RV_LOW_VALUE));
если это те домены и ничего не попутала :)
← →
Val © (2006-11-14 17:57) [43]>[41] Игорь Шевченко © (14.11.06 17:42)
зачем?
← →
Игорь Шевченко © (2006-11-14 18:03) [44]Val © (14.11.06 17:57) [43]
> зачем?
Ну чтобы домен был.
Оно ж как мыслится:
CREATE DOMAIN DFOO CHAR(3) DEFAULT "BAR" NOT NULL
CHECK (DFOO IN ("BAR", "BAZ", "BOO"));
а в объявлении таблицы пишешь просто
CREATE TABLE FOOTABLE (
....
FOO DFOO,
...
);
← →
Игорь Шевченко © (2006-11-14 18:04) [45]k2 © (14.11.06 17:57) [42]
То ж небось для самого дизайнера...
← →
Val © (2006-11-14 18:06) [46]>[42] k2 © (14.11.06 17:57)
Здесь под доменом понимается определенный пользователем тип, который может быть и типом поля таблицы. Такого в Оракле пока я не встретил.
← →
Val © (2006-11-14 18:22) [47]>[44] Игорь Шевченко © (14.11.06 18:03)
Ну не знаю... Дело привычки. В ИБ привык, в Оракле затем отвык - оказалось не так уж и нужно мне это в таблицах.
← →
ANB © (2006-11-14 18:48) [48]
> Игорь Шевченко © (14.11.06 18:04) [45]
Не. Как то же оракл разрешает создавать поля с объектными типами. Надо просто покопаться.
Хотя впрямую - да, обломс.
← →
Val © (2006-11-14 19:02) [49]>ANB © (14.11.06 18:48)
поля с объектыми типами? может, таблицы объектного типа?
← →
Desdechado © (2006-11-14 19:09) [50]Val © (14.11.06 19:02) [49]
и поля объектных типов тоже
← →
Val © (2006-11-14 19:17) [51]>[50] Desdechado © (14.11.06 19:09)
речь о вложенных таблицах?
← →
Desdechado © (2006-11-14 20:41) [52]Val © (14.11.06 19:17) [51]
нет, например:CREATE TABLE TUNE(
REGION_ID NUMBER(10) NOT NULL,
SDO_MIN_RECT MDSYS.SDO_GEOMETRY,
SDO_DIMINFO MDSYS.SDO_DIM_ARRAY
);
← →
Игорь Шевченко © (2006-11-15 10:27) [53]Val © (14.11.06 18:22) [47]
> Ну не знаю... Дело привычки. В ИБ привык, в Оракле затем
> отвык - оказалось не так уж и нужно мне это в таблицах.
Мне просто лень писать каждый раз одни и те же проверки. И лень потом исправлять во многих местах, если DOMAIN изменился по какой-то причине.
← →
Val © (2006-11-15 14:24) [54]>Desdechado © (14.11.06 20:41)
MDSYS.SDO_GEOMETRY
и
MDSYS.SDO_DIM_ARRAY
не являются таблицами по сути?
>[53] Игорь Шевченко © (15.11.06 10:27)
С этим я согласен(не зря же домены придуманы), но есть другой нюанс - создавая ограничения руками - вы именуете их как нужно вам, всегда можете ими управлять для конкретной таблицы не трогая других и т.д. Просто разные подходы.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.053 c