TRY...CATCH ブロックに引っかからない Transact SQL スクリプトからスローされた警告をログに記録したいと考えています。これを行う方法はありますか?ERROR_NUMBER() などは catch ブロックの外では機能せず、警告がスローされたことを知る方法さえわかりません。グーグルはあまり成果を上げていません。
質問する
1443 次
2 に答える
1
ドキュメントは、エラーメッセージがパックを呼び出し元に渡すことを意図しているようです。ただし、ストアド プロシージャでステートメントをラップし、それを try-catch ブロック内で呼び出すと、重大度の低いエラーがキャッチされるとも述べています。
-- Verify that the stored procedure does not exist.
IF OBJECT_ID ( N'usp_ExampleProc', N'P' ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that will cause an
-- object resolution error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT * FROM NonexistentTable;
GO
BEGIN TRY
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
于 2012-04-19T19:22:22.330 に答える
0
proc でラップして try しても、これらのエラーを try catch でキャッチすることはできません。ここに例があります。
CREATE PROC P
AS
BEGIN
RAISERROR('TEST',9,-1,-1)
END;
BEGIN TRY
EXEC P
END TRY
BEGIN CATCH
PRINT 'CAUGHT'
END CATCH;
于 2014-04-09T22:21:27.100 に答える