ERROR_PROCEDURE (Transact-SQL)
Saklı yordam veya tetikleyiciyi, bir hata oluştu, çalıştırılacak bir TRY…CATCH yapýsý CATCH blok neden döndürür.
ERROR_PROCEDURE ( )
Dönüş Türleri
nvarchar(126)
Return Value
Bir CATCH blok içinde çağrıldığında, hatanın oluştuğu saklı yordam adını döndürür.
Hata bir saklı yordam veya tetikleyiciyi değil oluşursa NULL döndürüyor.
kapsam dışında bir CATCH blok adlı ise, NULL döndürüyor.
Remarks
ERROR_PROCEDURE içinde herhangi bir yere çağrılabilir kapsam bir CATCH blok.
ERROR_PROCEDURE, hatanın, yeniden adlandırılır veya burada CATCH blok kapsamında adlı sayısı ne olursa olsun oluştuğu saklı yordam veya tetikleyiciyi adını döndürür.Bu hataya neden olan bir hemen deyim veya CATCH bloğunun ilk deyim hata numarasını döndürür, gibi işlevler @@ ERROR, ile karşıttır.
Iç içe geçmiş CATCH blok içinde ERROR_PROCEDURE saklı adını verir, onu başvuruda bulunulan yordam veya tetikleyiciyi CATCH kapsam için belirli blok.Örneğin, bir TRY…CATCH yapýsý CATCH blok iç içe geçmiş bir TRY…CATCH olabilir.Iç içe geçmiş CATCH blok içinde ERROR_PROCEDURE saklı yordam adını döndürür veya iç içe geçmiş CATCH blok, bir hata oluştu, tetikleyici çağırdı.Dış CATCH blok ERROR_PROCEDURE çalıştırılırsa, saklı yordam adını döndürür veya tetikleyici, bir hata oluştu, CATCH blok çağırdı.
Örnekler
C.Bir CATCH blok içinde ERROR_PROCEDURE kullanma
The following code example shows a stored procedure that generates a divide-by-zero error.ERROR_PROCEDURE returns the name of the stored procedure in which the error occurred.
USE AdventureWorks;
GO
-- Verify that the stored procedure does not already exist.
IF OBJECT_ID ( 'usp_ExampleProc', 'P' ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1/0;
GO
BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT ERROR_PROCEDURE() AS ErrorProcedure;
END CATCH;
GO
b.Diğer hata işleme araçlarıyla bir CATCH blok içinde ERROR_PROCEDURE kullanma
Aşağıdaki kod örneği sıfıra bölme hatası üretir saklı yordam gösterir.Hatanın oluştuğu saklı yordam adını birlikte hata bilgileri verir.
USE AdventureWorks;
GO
-- Verify that the stored procedure does not already exist.
IF OBJECT_ID ( 'usp_ExampleProc', 'P' ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1/0;
GO
BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_MESSAGE() AS ErrorMessage,
ERROR_LINE() AS ErrorLine;
END CATCH;
GO
See Also