Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Incorrect syntax near 'THROW'

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.

like image 576
Metaphor Avatar asked Jan 25 '16 21:01

Metaphor


2 Answers

From MSDN:

The statement before the THROW statement must be followed by the semicolon (;) statement terminator.

like image 141
Sam Axe Avatar answered Oct 15 '22 03:10

Sam Axe


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.

like image 35
TT. Avatar answered Oct 15 '22 04:10

TT.