Сбой в хранимой процедуре при намеренном отказе.
Я пытаюсь проверить часть перехвата в моей хранимой процедуре, изменив имя столбца после создания хранимой процедуры. Но улов никогда не выполняется, и он терпит неудачу в строке, где ошибка. Есть идеи, что я могу делать не так?
Шаги для воспроизведения:
* Create Table ErrorTest
CREATE TABLE [dbo].[ErrorTest](
[ErrorTest] [varchar](50) NULL
) ON [PRIMARY]
* Create Stored Procedure TestError
SET NOCOUNT ON;
DECLARE @EmailMessage AS VARCHAR(5000)
BEGIN
BEGIN TRY
SELECT ErrorTest FROM ErrorTest
END TRY
BEGIN CATCH
declare @error int, @message varchar(4000), @xstate int;
select @error = ERROR_NUMBER()
, @message = ERROR_MESSAGE()
, @xstate = XACT_STATE();
SET @EmailMessage = 'Failure ' + CHAR(13) + 'Error Code: '+ CAST(@error AS VARCHAR) + CHAR(13) + @message
EXEC [leads].[usp_SendEmail]
@Mysubject = N'FAILURE!',
@Mybody = @EmailMessage,
@Myrecipients = N'me@email.com'
END CATCH
END
Измените имя столбца на шаге 1 с
[ErrorTest] - [ErrorTest2]
Это приведет к сбою хранимой процедуры с ошибкой
Сообщение 207, уровень 16, состояние 1, ошибка процедуры Test, строка 8
Неверное имя столбца 'ErrorTest'.
Улов никогда не выполняется.