SQL Server 2000兼容脚本

时间:2009-11-27 20:04:55

标签: sql sql-server sql-server-2005 sql-server-2000

这个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

2 个答案:

答案 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