2009-11-27 119 views
-1

此T-SQL脚本在SQL Server 2005中正常工作,但在SQL Server 2000中,它表示'尝试''结束'附近的语法不正确。请帮忙吗?SQL Server 2000兼容脚本

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 
+2

http://stackoverflow.com/questions/1810032/try-catch-not-working-in-sql-server-2005/1810201#1810201 检查这个问题时,与您的问题类似 – sikender 2009-11-27 20:12:47

+1

如果您正在编写代码的数据库是SQL Server 2000数据库,您为什么要在SQL Server 2005中开发?如果您针对正确的数据库进行开发,则永远不会有这个问题。你所做的一切都是浪费你的公司时间来编写无法工作的代码。 – HLGEM 2011-05-18 19:20:52

回答

4

由于Sikender在他的评论中说,this岗位要求几乎完全一样的问题,这里的答案是一样的。 SQL Server 2000不支持try..catch;这是在SQL Server 2005中添加所以不管你是什么,它会在SQL Server 2000中

1

由于@Ken小白告诉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