Я использую блок try-catch в T-SQL и хочу отлавливать только определенный номер ошибки.В других случаях я использую RAISERROR () в качестве переброски бедного человека для возврата информации об ошибках в приложение.
При попытке выполнить следующее я получаю сообщение об ошибке «Неверный синтаксис рядом с error_message»:
raiserror
(
error_message()
,1
,1
)
Следующее, однако, работает нормально:
declare @err varchar(100)
set @err = error_message()
raiserror
(
@err
,1
,1
)
Я думал, что это может быть причудой приведения типов, поэтому я попробовал это, но это также привело к синтаксической ошибке:
raiserror
(
cast(error_message() as varchar(100))
,1
,1
)
Что здесь происходит?Почему я должен сохранить результат ERROR_MESSAGE () в переменной, прежде чем использовать его в качестве параметра для RAISERROR (), вместо непосредственного вызова функции?