powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Замена RAISERROR в Watcom SQL - SIGNAL
7 сообщений из 7, страница 1 из 1
Замена RAISERROR в Watcom SQL - SIGNAL
    #33392849
np9mi7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Задача: Необходимо сообщать об ошибках бизнесс логики сервера - клиенту, вызывающему хр. процедуру или функцию;

Решение: Принято решение генерировать exception средствами сервера, что то вроде:

Код: plaintext
1.
2.
3.
4.
5.
BEGIN 
   DECLARE myexception EXCEPTION 
   FOR SQLSTATE '99001'; 
   SIGNAL myexception; 
END

Проблема: клиент не зависимо от интерфейса работы с БД получает exception с сообщением: "User defined exception";

Вопрос: как регистрировать пользовательские сообщения для ошибок на сервере? (что то вроде sp_addmessage в Microsoft SQL Server 2000 );

Заранее благодарен за ответы.

Примечание: Sybase ASA 9.0.2.3207
...
Рейтинг: 0 / 0
Замена RAISERROR в Watcom SQL - SIGNAL
    #33393059
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE MESSAGE
...
Рейтинг: 0 / 0
Замена RAISERROR в Watcom SQL - SIGNAL
    #33393296
iliker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create message это transact-sql
...
Рейтинг: 0 / 0
Замена RAISERROR в Watcom SQL - SIGNAL
    #33393389
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
np9mi7
Код: plaintext
1.
2.
3.
4.
5.
BEGIN 
   DECLARE myexception EXCEPTION 
   FOR SQLSTATE '99001'; 
   SIGNAL myexception; 
END
Проблема: клиент не зависимо от интерфейса работы с БД получает exception с сообщением: "User defined exception";
Все правильно, что тебя смущает?
Клиентское приложение получает сообщение, читает SQLState, и по своей внутренней таблице формирует уже текстовое сообщение.
...
Рейтинг: 0 / 0
Замена RAISERROR в Watcom SQL - SIGNAL
    #33393729
np9mi7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlКлиентское приложение получает сообщение, читает SQLState, и по своей внутренней таблице формирует уже текстовое сообщение.

А SQLState по своей внутренней таблицы - это ты имеешь ввиду таблицу с описаниями SQLState в системных таблицах сервера (какие вообще есть?) или свою таблицу в БД?
...
Рейтинг: 0 / 0
Замена RAISERROR в Watcom SQL - SIGNAL
    #33395644
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
np9mi7А SQLState по своей внутренней таблицы - это ты имеешь ввиду таблицу с описаниями SQLState в системных таблицах сервера (какие вообще есть?) или свою таблицу в БД?
В системных таблицах сервера, твоих собственных SQLState значений быть все же не может, не так ли? :)
А вообще, текстовые описания ошибок хранить можно где угодно. И в базе, и на клиентской стороне... Как удобней покажется.
В хранимой процедуре (триггере, функции) объявляешь свое собственное исключение давая ему уникальный код в SQLState. Кидаешь его. Сервер для всех исключений чей SQLState ему не известен дает общее текстовое описание "User defined exception". Ну и все собственно говоря. Из этого и исходим.
Клиентская программа посылает на сервер какой-то запрос, а получив исключение проверяет в первую очередь этот самый SQLState. Если этот код есть в собственной таблице ошибок - показываем пользователю свое описание. Если нету - показываем серверное описание. Все просто и легко.
...
Рейтинг: 0 / 0
Замена RAISERROR в Watcom SQL - SIGNAL
    #33396075
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все это полезно и хорошо, когда требуется писать интернациональное приложение, где и сообщения об ошибках должны быть на разных языках. Если же проект пишется только для одной страны, то по моему легче RAISERROR делать и не заморачиваться.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Замена RAISERROR в Watcom SQL - SIGNAL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]