Tom пишет:
> Имеется MS SQL2008, правильно ли я понимаб что что бы заставить > RAISEERROR работать так же как throw в C# надо что бы RAISEROR был > внутри TRY/CATCH?
Нет. RAISERROR работает как printf() в С, System.out.println(), или как он там в C#.
Имеется MS SQL2008, правильно ли я понимаб что что бы заставить RAISEERROR работать так же как throw в C# надо что бы RAISEROR был внутри TRY/CATCH?
Союственно чего хочется, хочется простого, что бы после выполнения RAISERКOR выполнение сторы прекращалось и ошибка возвращалась пользователю
А не хочется — это повышать уровень severity и применять try/catch ну и return использовать сразу после RAISERROR тоже не хочется
Здравствуйте, Tom, Вы писали:
Tom>Имеется MS SQL2008, правильно ли я понимаб что что бы заставить RAISEERROR работать так же как throw в C# надо что бы RAISEROR был внутри TRY/CATCH?
RAISERROR работает как throw при определенном уровне severity и больше никак. Уже не помню правда при каком, то ли 18 тол и 19.
Здравствуйте, Tom, Вы писали:
Tom>А не хочется — это повышать уровень severity и применять try/catch ну и return использовать сразу после RAISERROR тоже не хочется
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 и выше, что приводит к обрыву соединения с базой данных.
_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 и выше, что приводит к обрыву > соединения с базой данных.