Udostępnij za pośrednictwem


ERROR_PROCEDURE (języka Transact-SQL)

Zwraca nazwę procedura przechowywana lub wyzwalacza, gdy wystąpił błąd, który spowodował blok CATCH konstrukcji TRY…CATCH ma być uruchomiony.

Topic link iconKonwencje składni języka Transact-SQL

ERROR_PROCEDURE ( )

Zwracane typy

nvarchar(126)

Return Value

Kiedy wywoływana w blok CATCH, zwraca nazwę procedura przechowywana wystąpił błąd.

Zwraca wartość NULL, jeśli błąd nie wystąpił w ramach procedura przechowywana lub wyzwalacza.

Zwraca wartość NULL, jeśli o nazwie poza zakres blok CATCH.

Remarks

ERROR_PROCEDURE może zostać wywołana w dowolnym miejscu w ciągu zakres blok CATCH.

ERROR_PROCEDURE zwraca nazwę procedura przechowywana lub wyzwalacz, w którym wystąpił błąd, niezależnie od liczby godzin, jest nazywany lub gdy jest on nazywany zakresem blok CATCH.To kontrastuje z funkcji, takich jak @@ ERROR, które zwracają błąd w instrukcja, bezpośrednio po tej, która spowodowała błąd lub w pierwszej instrukcja blok CATCH.

W blokach CATCH zagnieżdżone, ERROR_PROCEDURE zwraca nazwę przechowywane procedury lub wyzwalacza do zakres od połowy zablokować, w której istnieje odwołanie.Na przykład blok CATCH konstrukcji TRY…CATCH może mieć TRY…CATCH zagnieżdżone.W obrębie blok CATCH zagnieżdżone ERROR_PROCEDURE zwraca nazwę procedura przechowywana lub wyzwalacz, w którym wystąpił błąd, wywoływane zagnieżdżonych blok CATCH.Jeśli ERROR_PROCEDURE jest uruchamiana w zewnątrz blok CATCH, zwraca nazwę procedura przechowywana lub wyzwalacz, w którym wystąpił błąd, wywoływane z tego blok CATCH.

Przykłady

A.Za pomocą ERROR_PROCEDURE w blok CATCH

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.Za pomocą ERROR_PROCEDURE w blok CATCH z innymi narzędziami obsługi błędów

Poniższy przykład kodu pokazuje procedura przechowywana, która generuje błąd dzielenia przez zero.Informacje, które odnoszą się do błędu jest zwracana wraz z nazwą procedura przechowywana, w którym wystąpił błąd.

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