'THROW' 附近的语法不正确
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
当 CATCH
执行时,出现以下错误:
Msg 102, Level 15, State 1, Line 257
Incorrect syntax near 'THROW'.
用 PRINT @ErrorMessage
替换 THROW
有效。
用文字字符串替换 @ErrorMessage
变量有效。
然而,根据文档,THROW 应该能够获取变量。不知道该怎么做。
来自MSDN:
The statement before the THROW statement must be followed by the semicolon (;) statement terminator.
来自Documentation on THROW, Remarks:
The statement before the THROW statement must be followed by the semicolon (;) statement terminator.
始终以 semi-colon 结束语句是一个好习惯。
我刚遇到同样的错误,但原因完全不同。我使用的机器有点旧,但有 SSMS 2012(引入 THROW
的版本)。然而,实际的 SQL 服务器是 10.5(即 2008 R2;请参阅 https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level),因此该命令无效。
希望十年前的设置不会有太多实例,但请仔细检查您是否明白并确保您的语法正确!
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, Level 15, State 1, Line 257
Incorrect syntax near 'THROW'.
用 PRINT @ErrorMessage
替换 THROW
有效。
用文字字符串替换 @ErrorMessage
变量有效。
然而,根据文档,THROW 应该能够获取变量。不知道该怎么做。
来自MSDN:
The statement before the THROW statement must be followed by the semicolon (;) statement terminator.
来自Documentation on THROW, Remarks:
The statement before the THROW statement must be followed by the semicolon (;) statement terminator.
始终以 semi-colon 结束语句是一个好习惯。
我刚遇到同样的错误,但原因完全不同。我使用的机器有点旧,但有 SSMS 2012(引入 THROW
的版本)。然而,实际的 SQL 服务器是 10.5(即 2008 R2;请参阅 https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level),因此该命令无效。
希望十年前的设置不会有太多实例,但请仔细检查您是否明白并确保您的语法正确!