Share via


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.

Konu bağlantısı simgesi 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

Ayrıca bkz.

Başvuru

sys.messages (Transact-sql)

DENEYİN...catch (Transact-sql)

ERROR_LINE (Transact-sql)

error_message (Transact-sql)

error_number (Transact-sql)

ERROR_SEVERITY (Transact-sql)

error_state (Transact-sql)

RAISERROR (Transact-SQL)

@@ error (Transact-sql)