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.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…