这个T-SQL脚本在SQL Server 2005中运行良好,但在SQL Server 2000中,它在'Try''End'附近说错误的语法。有什么帮助吗?
Begin Transaction
Begin Try
UPDATE Test
SET RefID = 'bc27de13-2323-4ce8-8c87-0171efbd812a'
WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a';
DELETE FROM Physician
WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a'
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
答案 0 :(得分:4)
正如Sikender在评论中所说,this帖子几乎都提出了同样的问题,答案也是一样的。 SQL Server 2000不支持try..catch;这是在SQL Server 2005中添加的。所以无论你尝试什么,它都从不在SQL Server 2000中工作。
答案 1 :(得分:1)
由于@Ken White告诉try and catch
在SQL Server 2000中不受支持。您可以使用@@ERROR
来达到目的。您可以在每个语句后检查它,如果发生错误,则执行回滚。
您可以使用以下代码:
Begin Transaction
UPDATE Test
SET RefID = 'bc27de13-2323-4ce8-8c87-0171efbd812a'
WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a';
if @@ERROR<>0
Rollback transaction
DELETE FROM Physician
WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a'
if @@ERROR<>0
Rollback transaction
Commit Transaction