Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить текст с сообщением об ошибке.


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо