Exception при работе с DSQL

Программирование на Atlantis: приемы и подходы, обмен опытом

Модераторы: larin, Screw

m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Exception при работе с DSQL

Сообщение m0p3e » Пт, 21/10/2011 10:35

Имеется Галактика с БД Oracle. В БД есть процедура для получения данных с MSSQL сервера и упаковки их во временную таблицу. Иногда при запуске MSSQL сервер оказывается недоступным. При этом Галактика с грохотом валится оставляя в ORA90drv.log:

Код: Выделить всё

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SQL Server does not exist or access denied.[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (Connect()). (SQL State: 08001; SQL Code: 17)

Избежать краха системы можно добавив в процедуру заглушку:

Код: Выделить всё

 EXCEPTION
  WHEN OTHERS
    THEN NULL;

Но заглушка порождает другую проблему - понять что была ошибка при обращении не представляется возможным. Лог пуст.

Есть вариант избежать краха системы с соответствующим сообщением о наличии ошибки?
В идеале нужно оповестить пользователя о проблемах, но в крайнем случае сгодится запись в ORA90DRV.log.

Пробовал исключение оформлять в виде:

Код: Выделить всё

 EXCEPTION
  WHEN OTHERS
   THEN DBMS_OUTPUT.PUT_LINE(SQLERRM);

Не помогает.

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя