error_procedure (Transact-sql)
try… catch bloğu saklı yordam veya tetikleyiciyi nerede hata oluştu adını neden döndürürcatch yapı çalıştırılacak.
Transact-SQL Sözdizim Kuralları
Sözdizimi
ERROR_PROCEDURE ( )
Dönüş Türleri
nvarchar(126)
Dönüş Değeri
Bir catch bloğu çağrıldığında, hatanın oluştuğu saklı yordamın adını döndürür.
Bir saklı yordam veya tetikleyiciyi hata oluştu değil, null döndürüyor.
Bir catch bloğu kapsamı dışında null döndürür.
Açıklamalar
error_procedure, herhangi bir catch bloğu kapsamında çağrılabilir.
error_procedure, nerede, ne olursa olsun denir ya da nereye onun'seslenmek catch bloğu kapsamı içinde kaç kez hata saklı yordam veya tetikleyiciyi adını döndürür. Bu da hemen bir hata nedeniyle aşağıdaki deyimi veya catch bloğu ilk deyiminde hata numarasını döndürmek @@ error gibi işlevleri ile tezat.
Yuvalanmış catch bloklarında error_procedure saklı adını döndürür yordam veya tetikleyiciyi catch kapsam için özel blok o içinde hangi başvurulmaktadır. Örneğin, try… catch bloğucatch yapısı-ebil-si olmak iç içe try…YAKALAMAK. Yuvalanmış catch bloğu içinde error_procedure saklı yordamın adını döndürür veya yuvalanmış catch bloğu çağrıldığında tetikleyici nerede hata oluştu. error_procedure dış catch bloğu içinde çalıştırılırsa, saklı yordam adı verir veya tetikleyici nerede hata oluştu bu catch bloğu çağrıldığında.
Örnekler
A.error_procedure bir catch bloğu kullanma
Aşağıdaki kod örneği, bir tarafından sıfıra bölme hatası üretir bir saklı yordam gösterir. ERROR_PROCEDUREhatanın oluştuğu saklı yordamın adını döndürür.
USE AdventureWorks2012;
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
USE AdventureWorks2012;
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.error_procedure bir catch bloğu diğer hata işleme araçları ile kullanma
Aşağıdaki kod örneği, bir tarafından sıfıra bölme hatası üretir bir saklı yordam gösterir. Hatanın oluştuğu saklı yordam adı ile birlikte, ilgili hata döndürülür.
USE AdventureWorks2012;
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
USE AdventureWorks2012;
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