Показать сообщение об ошибке из процедуры PL / SQL для клиента - PullRequest
2 голосов
/ 25 августа 2011

У меня в клиенте C # есть блок try, который выполняет хранимую процедуру Oracle PL / SQL, и блок catch с использованием класса Exception.

В хранимой процедуре, если определенное условиевстречается во время обработки данных, возникает исключение с использованием raise_application_error.

Пример: raise_application_error(-20001, myErrMsg)

Затем я хочу перехватить это исключение и показать это конкретное сообщениев клиенте C # как есть.

И для всех других ошибок, связанных с базой данных (например, сбой ограничения, ошибки подключения), которые я хочу отследить, и они отображаются в моем настраиваемом сообщении об ошибках в клиенте C #.

В моем catch блоке я должен искать строку ORA-20001 в строке сообщения об исключении и затем распространять ее клиенту, чтобы определить, было ли выбрано вышеуказанное исключение из процедуры?

1 Ответ

1 голос
/ 25 августа 2011

Поймай исключение Oracle, если сможешь.

  try
    {
      cmd.CommandText = "DELETE FROM myable";
      cmd.ExecuteNonQuery();
    }
    catch (OracleException ex)
    {
       //Put your ORA-20001 logic here, or call a common method as shown
       HandleOracleException(ex);
    }

В обработчике перехвата проверьте, является ли число 20001, и затем выполните соответствующее действие.

Вот некоторые свойства OracleException

DataSource Задает имя TNS, которое содержит информацию для подключения к экземпляру Oracle

Ошибка Указывает коллекцию из одного или нескольких объектов OracleError, которые содержат информацию о исключения, сгенерированные базой данных Oracle

InnerException Унаследовано от исключения

Сообщение Указывает сообщения об ошибках, которые появляются в исключении

номер Определяет номер ошибки Oracle

Процедура Задает хранимую процедуру, вызывающую исключение

Источник Указывает имя поставщика данных, который генерирует ошибку

StackTrace Унаследовано от исключения

TargetSite Унаследовано от исключения

Ссылка для получения дополнительной информации:

http://download.oracle.com/docs/cd/B19306_01/win.102/b14307/OracleExceptionClass.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...