-1
如何在遞歸過程中處理錯誤?我正在使用SQL Server 2012.遞歸過程錯誤處理
CREATE PROCEDURE [dbo].[TEST]
@i INT
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION [T]
BEGIN TRY
PRINT @i
IF @i = 10
BEGIN
COMMIT TRANSACTION [T]
RETURN;
END
ELSE
BEGIN
SET @i = @i + 1;
EXEC DBO.TEST @i;
END
COMMIT TRANSACTION [T]
END TRY
BEGIN CATCH
IF @@TRANCOUNT>0
ROLLBACK TRANSACTION [T]
SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() AS ErrorMessage;
END CATCH
END
這只是一個示例,因爲我沒有自動發佈原始代碼。
那會是什麼錯誤?你可以發佈存儲過程,所以我們可以幫助你。 – JBond
我很迷惑提交的位置,以及SQL是否有變量來檢查遞歸級別。 –
這是純粹的,純粹的邪惡。在最好的日子裏,T-SQL是一種可怕的編程語言;使用它來實現遞歸和混合,並與事務處理有關。在你發佈的例子中,'@ i'將指示遞歸的級別,應該是有幫助的。如果你沒有這樣的變量,你可以使用存儲在臨時表中的行。 T-SQL無法訪問類似堆棧跟蹤的東西(儘管我很想在這方面證明是錯誤的)。但是,您可以使用事件探查器跟蹤或擴展事件跟蹤過程外的調用。 –