SQL Server 2000 совместимый скрипт - PullRequest
0 голосов
/ 27 ноября 2009

этот сценарий 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 ]

4 голосов
/ 27 ноября 2009

Как сказал Сикендер в своем комментарии, этот пост задает почти точно такой же вопрос, и ответ здесь тот же. SQL Server 2000 не поддерживает try..catch; это было добавлено в SQL Server 2005. Поэтому независимо от того, что вы пытаетесь, он никогда не будет работать в SQL Server 2000.

1 голос
/ 18 мая 2011

Как сказал @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 
...