我們正在使用Try/Catch block
處理我們的stored procedures
中的Exceptions
。在stored procedure
我有意做了一個error
來檢查如何處理exceptions
。我寫了一個stored procedure
像下面,異常處理無法處理SQL-SERVER中的錯誤
CREATE PROCEDURE TEST
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
;WITH CTE
AS
(SELECT TOP 10 *
FROM student)
SELECT * FROM CTE
SELECT * INTO #VAL
FROM CTE
IF @@ERROR = 0
BEGIN
COMMIT TRAN;
END
END TRY
BEGIN CATCH
SELECT @@ERROR AS ERROR, ERROR_LINE() AS [Error Line], ERROR_MESSAGE() AS [Error Message]
ROLLBACK TRAN;
END CATCH
SET NOCOUNT OFF;
END
在上面Stored procedure
我使用了一個CTE
多次。我預計SQL-SERVER
將處理例外,但它沒有。儘管執行上述stored Procedure
我下面error
消息208,級別16,狀態1,過程測試,行16
無效的對象名稱CTE「。
消息266,級別16,狀態2,過程測試,行16
事務計數後EXECUTE表示 失配數BEGIN和COMMIT語句。以前的計數= 1,當前計數= 2.
爲什麼不處理異常?有人可以提出這個想法嗎?
感謝您的幫助。
感謝您教我和msdn鏈接真的很有用:) – bmsqldev
樂意幫忙:) – TheGameiswar