2012-09-17 20 views
0

我有一個環有很多交易的存儲過程:如何故意測試交易中的錯誤?

WHILE @COUNT < @MY_NUM 
BEGIN 
    BEGIN TRANSACTION 
    -- DO STUFF HERE 

    IF(@@ERROR != 0) 
    BEGIN 
    ROLLBACK TRANSACTION 
    BREAK 
    END 

    COMMIT TRANSACTION 
END 

我現在想測試我ROLLBACK TRANSACTIONBREAK邏輯是否會被一定數量後,特意引入了錯誤的循環工作的運行並查看數據。

此外,我從shell腳本運行這些存儲過程。所以,我想在運行中使用Ctrl + C進行測試。這會工作嗎?如果不是,我如何故意引入一個錯誤?

感謝

回答

2

你可以做以下之一:

  1. Intentially零
  2. 使用RaiseError()
+0

將嘗試。謝謝。 – czchlong

1

可能會導致像鴻溝的錯誤使用print

WHILE @COUNT < @MY_NUM 
BEGIN 
    BEGIN TRANSACTION 
    print 'BEGIN TRANSACTION' 
    -- DO STUFF HERE 
    print '-- DO STUFF HERE' 
    IF(@@ERROR != 0) 
    BEGIN 
    ROLLBACK TRANSACTION 
    print 'ROLLBACK TRANSACTION @MY_NUM: %1!',convert(varchar,@MY_NUM) 
    BREAK 
    END 

    COMMIT TRANSACTION 
    print 'COMMIT TRANSACTION' 
END 

Here它鏈接到文檔。