2009-11-27 163 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