1
我在這種結構有交易:正確的方式來處理錯誤在TSQL交易
CREATE PROCEDURE XXX @param bit
AS
BEGIN TRAN
IF (@param = 1) BEGIN
-- DO SOME STUFF LIKE INSERT, UPDATE AND SO ON...
RETURN 1 -- RETURN 1 FOR SUCCESS
END
ELSE BEGIN
-- CONDITION IS NOT SUCCESSFUL SO NOTHING HAPPENED AND I NEED HANDLE
-- IN C#
RETURN -1
END
BEGIN TRY
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
RETURN -1
END CATCH
我已經添加了一些回報clausule,但我不知道是否是它很好的解決方案,並在C#中處理它碼?在C#中,我需要處理的只有2個狀態:
- 如果條件適合,和代碼沒有錯誤做返回1或真
- 其他情況下返回-1或虛假
是該程序的身體OK的那?
感謝答案
你看在TSQL的'RaiseError'聲明?使用正確的參數調用它會導致在您的C#代碼中拋出異常。 –
執行COMMIT TRAN不會引發在BEGIN TRANS之後產生的錯誤,如果這是個想法 - 當它們發生時被引發,因此奇數到TRY/CATCH一個COMMIT –
如果您在BEGIN TRAN之後返回,則將其保留爲未提交&unrolledback - 請參閱http://www.sommarskog.se/error_handling/Part1.html獲取一般模式。 –