Aracılığıyla paylaş


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.

Topic link iconTransact-SQL sözdizimi kuralları

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