Повысьте ошибку вручную в T-SQL для перехода для НАЧАЛА блока ВЫГОДЫ

К счастью для нас, C# 3.0 включает Cast операция:

int[] result = enumArray.Cast<int>().ToArray();

, Если Вы прекращаете использовать массивы и начинаете использовать IEnumerable<>, можно даже избавиться от эти ToArray() вызов.

36
задан abatishchev 13 April 2012 в 07:54
поделиться

3 ответа

вы можете использовать raiserror . Подробнее см. здесь

- из MSDN

BEGIN TRY
    -- RAISERROR with severity 11-19 will cause execution to 
    -- jump to the CATCH block.
    RAISERROR ('Error raised in TRY block.', -- Message text.
               16, -- Severity.
               1 -- State.
               );
END TRY
BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

    -- Use RAISERROR inside the CATCH block to return error
    -- information about the original error that caused
    -- execution to jump to the CATCH block.
    RAISERROR (@ErrorMessage, -- Message text.
               @ErrorSeverity, -- Severity.
               @ErrorState -- State.
               );
END CATCH;

ИЗМЕНИТЬ Если вы используете SQL Server 2012+, вы можете использовать предложение throw . Вот подробности.

67
ответ дан 27 November 2019 в 05:32
поделиться

Вы ищете RAISERROR .

Из MSDN:

Создает сообщение об ошибке и инициирует обработку ошибок для сеанс. RAISERROR может либо ссылка на определяемое пользователем сообщение хранится в каталоге sys.messages просматривать или создавать сообщение динамически. Сообщение возвращается как сервер сообщение об ошибке вызывающему приложение или связанный CATCH блок конструкции TRY… CATCH.

CodeProject имеет хорошую статью , которая также подробно описывает, как она работает и как ее использовать.

2
ответ дан 27 November 2019 в 05:32
поделиться

В SQL есть механизм вывода ошибок

RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]

Просто найдите Raiserror в электронной документации. Но ... вы должны сгенерировать ошибку соответствующей серьезности, ошибка с уровнем серьезности от 0 до 10 не приведет к переходу к блоку catch.

2
ответ дан 27 November 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: