我正在使用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吗?
答案 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