在SQL Server中尝试捕获

时间:2010-10-26 13:30:19

标签: sql-server sql-server-2008 try-catch

我正在使用SQL Server 2008.我试图执行以下操作:

BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    PRINT 'ERROR'
END CATCH;

但是我收到以下错误:

>Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'TRY'.
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'END'.

任何人都可以告诉我如何在SQL Server中执行try catch吗?

4 个答案:

答案 0 :(得分:8)

对于SQL Server 2005及更高版本,这是一个完全有效的声明,因此我将使用sp_dbcmptlevel (Transact-SQL)检查您的兼容性级别:

exec sp_dbcmptlevel 'YourDatabaseName'

80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008

我认为它会返回80或更低,似乎它不知道BEGIN TRY,只知道BEGIN。 SQL Server 2005中添加了BEGIN TRY

答案 1 :(得分:2)

在SQL Server 2008上也可以正常使用,未经编辑。

答案 2 :(得分:2)

如果你仍然有这个错误,问题就变成,你有一个BEGIN CATCH ... END CATCH部分。如果没有,你会收到这个错误。如果你有一个没有T-SQL代码的BEGIN TRY ... END TRY部分,那么它也会产生错误。

我不认为人们告诉您正在使用SQL Server 2000是有帮助的。它更可能是T-SQL编码问题,因为您倾向于知道您正在运行的服务器。

答案 3 :(得分:2)

Begin try
  Begin transaction
    --------
    --------
  Commit transaction
End try
Begin catch
  Rollback transaction
End catch

http://intquesans.blogspot.com/2011/05/how-we-can-use-try-catch-in-sql.html