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
When the CATCH
executes, I get the following error:
Msg 102, Level 15, State 1, Line 257
Incorrect syntax near 'THROW'.
Replacing THROW
with PRINT @ErrorMessage
works.
Replacing @ErrorMessage
variable with a literal string works.
According to the docs, however, THROW is supposed to be able to take a variable. Not sure what to make of this.
From MSDN:
The statement before the THROW statement must be followed by the semicolon (;) statement terminator.
From the Documentation on THROW, Remarks:
The statement before the THROW statement must be followed by the semicolon (;) statement terminator.
It's a good habit to always end your statements with a semi-colon.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With