Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизПолучить текст с сообщением об ошибке. Найти похожие ветки
← →
SergP. (2006-09-04 12:32) [0]ADO, Oracle
Если при выполнении некой PL/SQL процедуры:
with TADOCommand.Create(Application) do
try
Connection:=ADConn;
CommandText:="begin ....... ; end;";
Execute;
finally
free;
end;
возникло исключение, то можно ли получить текст с соответствующим Оракловским сообщением?
← →
Anatoly Podgoretsky © (2006-09-04 12:39) [1]Для того, чтобы обрабатывать ошибку надо включить блок
try except end
← →
Desdechado © (2006-09-04 12:40) [2]можно, как всегда, через except или глобальный обработчик
← →
SergP. (2006-09-04 13:02) [3]> [1] Anatoly Podgoretsky © (04.09.06 12:39)
> Для того, чтобы обрабатывать ошибку надо включить блок try
> except end
Ну у меня примерно так все:
try
...
with TADOCommand.Create(Application) do
try
Connection:=ADConn;
CommandText:="begin ....... ; end;";
Execute;
finally
free;
end;
...
except
...
end;
Но мне нужно не просто обработать ошибку, а узнать что за ошибка...
ну типа когда я выполняю процедуру в SQLPlus я получаю:
ERROR at line 1:
ORA-01401: inserted value too large for column
ORA-06512: at "XXXXX.XXXXXX", line 983
ORA-06512: at line 2
Вот этот текст можно получить или нет?
← →
ANB © (2006-09-04 13:08) [4]
> Вот этот текст можно получить или нет?
Это не текст ошибки, а стек ошибок. И вытащить его не так просто.
← →
ANB © (2006-09-04 13:10) [5]А через ADO будет тем более проблематично.
А текст ошибки лежим в свойстве Message класса Exception
← →
SergP. (2006-09-04 13:11) [6]> [4] ANB © (04.09.06 13:08)
>
> > Вот этот текст можно получить или нет?
>
> Это не текст ошибки, а стек ошибок. И вытащить его не так
> просто.
Плохо...
ну ладно. Тогда придется обойтись без этого...
← →
ANB © (2006-09-04 13:16) [7]
> Плохо...
> ну ладно. Тогда придется обойтись без этого...
Используй одак, и счастья будет больше. Он стек тянет на клиента.
← →
SergP. (2006-09-04 13:30) [8]> Используй одак, и счастья будет больше. Он стек тянет на
> клиента.
Дык я так и не нашел нужные компоненты... Три разных библиотеки компонентов "для прямого доступа" скачал, но так и не понял почему в них параметры подключения указываются не так как это должно быть при прямом доступе.
Почему там базу можно указать только из tnsnames.ora , и пр.
← →
Desdechado © (2006-09-04 13:34) [9]> Это не текст ошибки, а стек ошибок. И вытащить его не так просто.
dbExpress его вынимает как текст ошибки. Без всяких проблем. Хотя, возможно, это особенности драйвера.
← →
Sergey13 © (2006-09-04 13:34) [10]> [8] SergP. (04.09.06 13:30)
Остается сказать как должны указываться параметры при прямом доступе и что пишется в АДО (неужели строка поключения из tnsnames.ora не учавствует? - я ен в курсе)?
← →
SergP. (2006-09-04 13:41) [11]> [10] Sergey13 © (04.09.06 13:34)
> > [8] SergP. (04.09.06 13:30)
>
> Остается сказать как должны указываться параметры при прямом
> доступе и что пишется в АДО (неужели строка поключения из
> tnsnames.ora не учавствует? - я ен в курсе)?
Ну в ADO - логин/пароль/локальный TNS
А насчет прямого доступа, я всегда считал что:
Логин/пароль/SID/Хост/Порт
Ну может я не прав. Не знаю точно... Просто помню что находил такие компоненты для прямого доступа, но это давно было. Сейчас искал - никак найти не получается...
← →
ANB © (2006-09-04 13:42) [12]
> это должно быть при прямом доступе.
То, что ты хочешь, это не прямой доступ, а кривой.
← →
ANB © (2006-09-04 13:43) [13]
> находил такие компоненты для прямого доступа
ОДАК позволяет работать без клиента или с клиентом, но без использования tnsnames.
← →
parovoZZ © (2006-09-04 13:45) [14]Подойдёт или нет?
ADOConnect.Errors.Get_Item (0).NativeError;
ADOConnect.Errors.Item[0].Description;
← →
SergP. (2006-09-04 13:51) [15]> [13] ANB © (04.09.06 13:43)
>
> > находил такие компоненты для прямого доступа
>
> ОДАК позволяет работать без клиента или с клиентом, но без
> использования tnsnames.
Откуда он тогда должен знать с чем я хочу работать, если SID , хост и порт там не указывать и tnsnames не используется?
← →
SergP. (2006-09-04 13:51) [16]> [14] parovoZZ © (04.09.06 13:45)
> Подойдёт или нет?
>
> ADOConnect.Errors.Get_Item (0).NativeError;
> ADOConnect.Errors.Item[0].Description;
Щас проверим...
← →
SergP. (2006-09-04 13:54) [17]> [14] parovoZZ © (04.09.06 13:45)
> Подойдёт или нет?
>
> ADOConnect.Errors.Get_Item (0).NativeError;
> ADOConnect.Errors.Item[0].Description;
Оно.
Спасибо!!!
← →
ANB © (2006-09-04 14:04) [18]
> Откуда он тогда должен знать с чем я хочу работать, если
> SID , хост и порт там не указывать и tnsnames не используется?
>
Кто сказал, что его там нельзя указать ?
← →
SergP. (2006-09-04 14:07) [19]> Кто сказал, что его там нельзя указать ?
Я там такого не нашел
← →
ANB © (2006-09-04 14:34) [20]
> SergP. (04.09.06 14:07) [19]
Кликни два раза по TOraSession и узнаешь много интересного. :)
← →
SergP. (2006-09-04 15:20) [21]> [20] ANB © (04.09.06 14:34)
>
> > SergP. (04.09.06 14:07) [19]
>
> Кликни два раза по TOraSession и узнаешь много интересного.
> :)
Кликнул. открылся ихний Экплорер, в котором ничего особого нет, хотя если попытаться залогиниться то предлагает ввести логин/пароль и базу, где предлагается на выбор то что у меня прописано в tnsnames.ora
← →
ANB © (2006-09-04 15:39) [22]
> SergP. (04.09.06 15:20) [21]
Ты точно по одаковской TOraSession кликаешь ? Насколько я помню, там есть галка Net и возможность вводить хост, сид и IP. Короче, у этого компонента есть аналог строки коннекта, в которую он и кидает все, что ты написала в отдельных свойствах. Через нее можно работать, если не хочешь указывать TNS. (только нафига это нужно). Вообще, странная идея уходить с имеющихся нативных компонентов на универсальные только из-за того, что не смог подключиться напрямую.
Это называется создавать себе трудности и мужественно их преодолевать. Вы, часом, срочную в армии не служили ?
← →
SergP. (2006-09-04 16:43) [23]> [22] ANB © (04.09.06 15:39)
> > SergP. (04.09.06 15:20) [21]
>
> Ты точно по одаковской TOraSession кликаешь ?
А черт ее знает... Я по поисковикам по запросу "Компоненты Delphi прямого доступа Oracle" понаходил несколько таких компонентов, понаставлял.
Если не трудно, дайте ссылку на 100% одаковский компонент.
А то у меня есть подозрение что в инете очень много чего называется компонентами прямого доступа лишь по той причине что позволяют работать без BDE...
> Вы, часом, срочную в армии не служили ?
Служил. :-)
← →
ANB © (2006-09-04 16:50) [24]
> Служил. :-)
И что, неужели армия вас не научила, что это хреновый подход ?
Нет, если, конечно, согласно ТЗ нужно писать на ADO+Oracle и заказчик/начальство никак не хочет использовать ничего другого - это одно. А зачем искать себе проблемы добровольно ?
← →
ANB © (2006-09-04 16:51) [25]
> Если не трудно, дайте ссылку на 100% одаковский компонент.
К сожалению, ссылка не поможет. Вы в москве ?
← →
SergP. (2006-09-04 17:02) [26]
> [24] ANB © (04.09.06 16:50)
>
> > Служил. :-)
>
> И что, неужели армия вас не научила, что это хреновый подход
> ?
> Нет, если, конечно, согласно ТЗ нужно писать на ADO+Oracle
> и заказчик/начальство никак не хочет использовать ничего
> другого - это одно. А зачем искать себе проблемы добровольно
> ?
Да нет. Заказчика нет. Пишу по собственной инициативе, чтобы облегчить жизнь себе и удаленным сотрудникам.
Да и щас я пока пишу на АДО, но стараюсь так чтобы если вдруг найду нормальные ODAC компоненты, то чтобы переделка не заняла много времени.
> [25] ANB © (04.09.06 16:51)
>
> > Если не трудно, дайте ссылку на 100% одаковский компонент.
>
> К сожалению, ссылка не поможет. Вы в москве ?
К сожалению нет... Даже не в России...
А почему ссылка не поможет?
← →
ANB © (2006-09-04 17:07) [27]
> А почему ссылка не поможет?
Потому что по ней качать если и дадут, то триал. А так бы лично дал . . .
← →
sniknik © (2006-09-04 17:12) [28]> Но мне нужно не просто обработать ошибку, а узнать что за ошибка...
> ну типа когда я выполняю процедуру в SQLPlus я получаю:
> ERROR at line 1:
> ORA-01401: inserted value too large for column
> ORA-06512: at "XXXXX.XXXXXX", line 983
> ORA-06512: at line 2
> Вот этот текст можно получить или нет?
что провайдер передаст то и получиш (если это ошибка а не сообщение, вот его получить проблемнее)
не знаю с ораклом, проверить не могу но от FB на неверный запрос
SELECT * FROM TABLE1
WHERE ID IS Nil
например получаю
EOleException:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, char 13
Nil
все правильно, между прочим. наверняка и для оракла будет также, проверить ка говорил не могу, счас не оракл стоит, но могу послать для самостоятельного теста прогу на ADO.
← →
SergP. (2006-09-04 17:12) [29]> [27] ANB © (04.09.06 17:07)
>
> > А почему ссылка не поможет?
>
> Потому что по ней качать если и дадут, то триал. А так бы
> лично дал . . .
Может по мылу? glukmaker@gmail.com
← →
ANB © (2006-09-04 17:17) [30]
> Может по мылу? glukmaker@gmail.com
У нас траффик ограничен. А вместо мыла вообще лотус. Так что пока облом.
← →
SergP. (2006-09-04 17:19) [31]> [28] sniknik © (04.09.06 17:12)
Просто в цикле несколько раз выполняется процедура, и иногда при некоторых входных параметрах возникают подобные сообщения
> ERROR at line 1:
> ORA-01401: inserted value too large for column
> ORA-06512: at "XXXXX.XXXXXX", line 983
> ORA-06512: at line 2
вот я и хотел сделать чтобы поскладывать их в лог, чтобы юзер потом мог его просмотреть и проанализировать...
Что касается ADO, то мне [14] parovoZZ © (04.09.06 13:45) помогло...
← →
ANB © (2006-09-04 17:21) [32]
> SergP. (04.09.06 17:19) [31]
Вообще то хорошим подходом было бы ошибки исправить, а не скидывать юзеру, который их все равно не поймет :)
Эта ошибка означает, что вставляемое значение не лезет в поле таблицы.
← →
SergP. (2006-09-04 17:26) [33]> [30] ANB © (04.09.06 17:17)
>
> У нас траффик ограничен.
Хм... Жаль...
> [30] ANB © (04.09.06 17:17)
> А вместо мыла вообще лотус. Так
> что пока облом.
Ну не обязательно мыло, можно было бы и по ftp, если бы не:
> [30] ANB © (04.09.06 17:17)
>
> У нас траффик ограничен.
Ладно... С АДО проблема решена. А что касается ОДАК - может когда-нить найду что-то и переделаю...
← →
SergP. (2006-09-04 17:30) [34]> [32] ANB © (04.09.06 17:21)
>
> > SergP. (04.09.06 17:19) [31]
>
> Вообще то хорошим подходом было бы ошибки исправить, а не
> скидывать юзеру, который их все равно не поймет :)
> Эта ошибка означает, что вставляемое значение не лезет в
> поле таблицы.
Ну во первых у каждого такого "юзера" своя база со своими ошибками, да и половина этих "юзеров" - такие же сисадмины как и я.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.037 c