![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить текст с сообщением об ошибке.
SergP. © (2006-09-04 12:32:00)ADO, Oracle
Если при выполнении некой PL/SQL процедуры:
with TADOCommand.Create(Application) do
try
Connection:=ADConn;
CommandText:='begin ....... ; end;';
Execute;
finally
free;
end;
возникло исключение, то можно ли получить текст с соответствующим Оракловским сообщением?
parovoZZ (2006-09-04 13:45:00) [21]Подойдёт или нет?
ADOConnect.Errors.Get_Item (0).NativeError;
ADOConnect.Errors.Item[0].Description;
ANB (2006-09-04 13:43:00) [22]
> находил такие компоненты для прямого доступа
ОДАК позволяет работать без клиента или с клиентом, но без использования tnsnames.
ANB (2006-09-04 13:42:00) [23]
> это должно быть при прямом доступе.
То, что ты хочешь, это не прямой доступ, а кривой.
SergP. (2006-09-04 13:41:00) [24]> [10] Sergey13 © (04.09.06 13:34)
> > [8] SergP. (04.09.06 13:30)
>
> Остается сказать как должны указываться параметры при прямом
> доступе и что пишется в АДО (неужели строка поключения из
> tnsnames.ora не учавствует? - я ен в курсе)?
Ну в ADO - логин/пароль/локальный TNS
А насчет прямого доступа, я всегда считал что:
Логин/пароль/SID/Хост/Порт
Ну может я не прав. Не знаю точно... Просто помню что находил такие компоненты для прямого доступа, но это давно было. Сейчас искал - никак найти не получается...
Sergey13 (2006-09-04 13:34:00) [25]> [8] SergP. (04.09.06 13:30)
Остается сказать как должны указываться параметры при прямом доступе и что пишется в АДО (неужели строка поключения из tnsnames.ora не учавствует? - я ен в курсе)?
Desdechado (2006-09-04 13:34:00) [26]> Это не текст ошибки, а стек ошибок. И вытащить его не так просто.
dbExpress его вынимает как текст ошибки. Без всяких проблем. Хотя, возможно, это особенности драйвера.
SergP. (2006-09-04 13:30:00) [27]> Используй одак, и счастья будет больше. Он стек тянет на
> клиента.
Дык я так и не нашел нужные компоненты... Три разных библиотеки компонентов "для прямого доступа" скачал, но так и не понял почему в них параметры подключения указываются не так как это должно быть при прямом доступе.
Почему там базу можно указать только из tnsnames.ora , и пр.
ANB (2006-09-04 13:16:00) [28]
> Плохо...
> ну ладно. Тогда придется обойтись без этого...
Используй одак, и счастья будет больше. Он стек тянет на клиента.
SergP. (2006-09-04 13:11:00) [29]> [4] ANB © (04.09.06 13:08)
>
> > Вот этот текст можно получить или нет?
>
> Это не текст ошибки, а стек ошибок. И вытащить его не так
> просто.
Плохо...
ну ладно. Тогда придется обойтись без этого...
ANB (2006-09-04 13:10:00) [30]А через ADO будет тем более проблематично.
А текст ошибки лежим в свойстве Message класса Exception
ANB (2006-09-04 13:08:00) [31]
> Вот этот текст можно получить или нет?
Это не текст ошибки, а стек ошибок. И вытащить его не так просто.
SergP. (2006-09-04 13:02:00) [32]> [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
Вот этот текст можно получить или нет?
Desdechado (2006-09-04 12:40:00) [33]можно, как всегда, через except или глобальный обработчик
Anatoly Podgoretsky (2006-09-04 12:39:00) [34]Для того, чтобы обрабатывать ошибку надо включить блок
try except end