-1
所以我創建的(我曾經在其他網站上找到了一些東西)來處理交易,並在執行存儲過程可以調用需要交易等您是否看到該存儲過程模板的任何問題?
所以如果我有其他存儲過程有一種堆棧跟蹤的一個調用乙和乙呼籲ç和ç得到一個錯誤,我可以正確回滾我的東西,並返回一個堆棧跟蹤說法:用C錯誤,請跟蹤,找出/如何/ etc ...
你們有沒有發現這個邏輯有問題?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[NAME]
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
declare @trancount int
set @trancount = @@trancount
declare @savePointName varchar(40)
set @savePointName = newid()
BEGIN TRY
if @trancount = 0
begin transaction
else
save transaction @savePointName
/*
// STUFF HERE
*/
if @trancount = 0
commit transaction
END TRY
BEGIN CATCH
declare @xstate int
set @xstate = XACT_STATE()
if @xstate = -1 and @trancount = 0
rollback transaction
if @xstate = 1 and @trancount = 0
rollback transaction
if @xstate = 1 and @trancount > 0
rollback transaction @savePointName
declare @message varchar(max)
set @message = ERROR_MESSAGE() +
' (' + ERROR_PROCEDURE() +
':' + ltrim(str(ERROR_LINE())) +
', Raised ' + ltrim(str(ERROR_NUMBER())) +
', Severity ' + ltrim(str(ERROR_SEVERITY())) +
', State ' + ltrim(str(ERROR_STATE())) + ')'
RAISERROR(@message,16,1)
END CATCH
END
你想讓我們看看有什麼錯誤嗎? – JonH 2009-12-03 13:44:38
不,我想知道是否有人發現任何邏輯問題,到目前爲止它似乎工作正常,但它似乎在Adobe生命週期中可能有問題 – Fredou 2009-12-03 13:50:02
爲什麼投票? – Fredou 2009-12-08 19:19:18