IF @SQL IS NOT NULL
BEGIN
BEGIN TRY
EXEC sp_executesql @SQL
PRINT 'SUCCESS: ' + @SQL
END TRY
BEGIN CATCH
SET @ErrorMessage =
N'Error dropping constraint' + @CRLF
+ 'Table ' + @TableName + @CRLF
+ 'Script: ' + @SQL + @CRLF
+ 'Error message: ' + ERROR_MESSAGE() + @CRLF
THROW 50100, @ErrorMessage, 1;
END CATCH
END
Когда выполняется CATCH
, я получаю следующую ошибку:
Msg 102, уровень 15, состояние 1, строка 257
Некорректный синтаксис рядом с "THROW".
Замена THROW
на PRINT @ErrorMessage
работает.
Замена переменной @ErrorMessage
с литеральной строкой.
В соответствии с документами, THROW, как предполагается, может принимать переменную. Не уверен, что с этим делать.