TRY CATCH

问题描述:

我使用SQL Server 2008中我试图执行以下操作:TRY CATCH

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?

+1

我不明白在2008年SQL – Brad 2010-10-26 13:31:33

+1

错误我也能够运行该代码未编辑,SQL 2005 – Fosco 2010-10-26 13:34:02

+0

你还有什么在查询窗口中可以执行以及? – Oded 2010-10-26 13:36:48

这是对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

对我来说,同样的错误。但我的是目前的兼容级别是100 .. – 2014-06-18 13:42:07

+0

@Jeeva Jsb,如果您确定兼容模式,然后创建一个新问题并发布您的代码 – 2014-06-18 14:51:17

工作正常,我也,未编辑的,SQL Server 2008的

如果仍然存在此错误,问题就变成了,您是否在其中放入了BEGIN CATCH ... END CATCH部分。如果不是,则会出现此错误。如果您的BEGIN TRY ... END TRY部分没有T-SQL代码,那么它也会产生错误。

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

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

+0

在我的情况下,我已经把'Begin Transaction'放在'Begin Try' ',但'Try Transaction'在'Try'块中。这个答案告诉我我做错了什么。 – 2014-08-04 14:08:52