RAISERROR vs throw new ....
От: Tom Россия http://www.RSDN.ru
Дата: 16.07.09 11:59
Оценка:
Всем привет,

Имеется MS SQL2008, правильно ли я понимаб что что бы заставить RAISEERROR работать так же как throw в C# надо что бы RAISEROR был внутри TRY/CATCH?
Союственно чего хочется, хочется простого, что бы после выполнения RAISERКOR выполнение сторы прекращалось и ошибка возвращалась пользователю
А не хочется — это повышать уровень severity и применять try/catch ну и return использовать сразу после RAISERROR тоже не хочется
Народная мудрось
всем все никому ничего(с).
Re: RAISERROR vs throw new ....
От: IB Австрия http://rsdn.ru
Дата: 16.07.09 12:03
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Имеется MS SQL2008, правильно ли я понимаб что что бы заставить RAISEERROR работать так же как throw в C# надо что бы RAISEROR был внутри TRY/CATCH?

RAISERROR работает как throw при определенном уровне severity и больше никак. Уже не помню правда при каком, то ли 18 тол и 19.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re: RAISERROR vs throw new ....
От: _d_m_  
Дата: 16.07.09 18:51
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>А не хочется — это повышать уровень severity и применять try/catch ну и return использовать сразу после RAISERROR тоже не хочется


RAISERROR + RETURN
что поделать — это TSQL
Re: RAISERROR vs throw new ....
От: MasterZiv СССР  
Дата: 16.07.09 19:39
Оценка: -1
Tom пишет:

> Имеется MS SQL2008, правильно ли я понимаб что что бы заставить

> RAISEERROR работать так же как throw в C# надо что бы RAISEROR был
> внутри TRY/CATCH?

Нет. RAISERROR работает как printf() в С, System.out.println(), или как он там в C#.

На поток управления он никак не влияет.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: RAISERROR vs throw new ....
От: _d_m_  
Дата: 17.07.09 00:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:


MZ>Нет. RAISERROR работает как printf() в С, System.out.println(), или как он там в C#.


MZ>На поток управления он никак не влияет.


Ошибаиси.

Ошибки, созданные инструкцией RAISERROR, аналогичны ошибкам, созданным кодом компонента Database Engine. Значения, указанные в инструкции RAISERROR, выводятся системными функциями ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE и @@ERROR. Если инструкция RAISERROR с уровнем серьезности 11 или выше выполняется в блоке TRY, управление передается соответствующему блоку CATCH. Ошибка возвращается вызывающему объекту, если инструкция RAISERROR вызывается:
— за пределами области любого блока TRY;
— с уровнем серьезности, равным 10 и менее в блоке TRY;
— с уровнем серьезности, равным 20 и выше, что приводит к обрыву соединения с базой данных.

Re[2]: RAISERROR vs throw new ....
От: IB Австрия http://rsdn.ru
Дата: 17.07.09 05:33
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>На поток управления он никак не влияет.

Учи матчасть.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[3]: RAISERROR vs throw new ....
От: MasterZiv СССР  
Дата: 17.07.09 08:23
Оценка:
_d_m_ пишет:

> MZ>На поток управления он никак не влияет.

>
> Ошибаиси.
>
> Ошибки, созданные инструкцией RAISERROR, аналогичны ошибкам,
> созданным кодом компонента Database Engine. Значения, указанные в
> инструкции RAISERROR, выводятся системными функциями ERROR_LINE,
> ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY,
> ERROR_STATE и @@ERROR. Если инструкция RAISERROR с уровнем
> серьезности 11 или выше выполняется в блоке TRY, управление
> передается соответствующему блоку CATCH. Ошибка возвращается
> вызывающему объекту, если инструкция RAISERROR вызывается:
> — за пределами области любого блока TRY;
> — с уровнем серьезности, равным 10 и менее в блоке TRY;
> — с уровнем серьезности, равным 20 и выше, что приводит к обрыву
> соединения с базой данных.

"UPGRADE ?" (c) Neo
Posted via RSDN NNTP Server 2.1 beta
Re[4]: RAISERROR vs throw new ....
От: _d_m_  
Дата: 21.07.09 04:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>_d_m_ пишет:


MZ>"UPGRADE ?" (c) Neo


Начиная с MS SQL 2005 т.е. как и появилось TRY/CATCH.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.