Udostępnij za pośrednictwem


ERROR_PROCEDURE (Transact-SQL)

Zwraca nazwę procedura składowana lub wyzwalacz, w którym wystąpił błąd, który spowodował CATCH blok TRY…CATCH konstrukcja ma zostać uruchomione.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

ERROR_PROCEDURE ( )

Zwracane typy

nvarchar(126)

Wartość zwracana

Po wywołaniu w blokCATCH zwraca nazwę procedura składowana , której wystąpił błąd.

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

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

Uwagi

ERROR_PROCEDURE może być wywołana gdziekolwiek w obrębie zakres blokCATCH.

ERROR_PROCEDURE zwraca nazwę procedura składowana lub wyzwalacz, w którym wystąpił błąd, niezależnie od liczby godzin jest nazywany lub w przypadku gdy jest ona wywoływana w zakres blokCATCH.Kontrastuje to z funkcji, takich jak @@ błędów, które zwraca numer błędu w instrukcja bezpośrednio po jednej, który spowodował błąd lub pierwsza instrukcja CATCH blok.

W zagnieżdżone bloki CATCH ERROR_PROCEDURE zwraca nazwę procedura składowana lub wyzwalacza określonego blok CATCH, w której jest odwołanie do zakres .Na przykład, połowu blok TRY…Konstrukcja CATCH może mieć TRY… zagnieżdżonychCATCH.Zagnieżdżone połowu blokERROR_PROCEDURE zwraca nazwę procedura składowana lub wyzwalacz, w którym wystąpił błąd, który wywołany CATCH zagnieżdżonego blok.Jeśli ERROR_PROCEDURE jest uruchamiana w zewnętrznej połowu blok, zwraca nazwę procedura składowana lub wyzwalacz, w którym wystąpił błąd, który jest wywoływany blokCATCH.

Przykłady

A.Za pomocą ERROR_PROCEDURE w blokCATCH

Poniższy przykład kodu pokazuje procedura składowana , która generuje błąd dzielenia przez zero.ERROR_PROCEDUREZwraca nazwę procedura składowana , w którym wystąpił błąd.

USE AdventureWorks2008R2;
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 inne narzędzia do obsługi błędów

Poniższy przykład kodu pokazuje procedura składowana , która generuje błąd dzielenia przez zero.Wraz z nazwą procedura składowana , w którym wystąpił błąd informacje, które odnosi się do błędu jest zwracany.

USE AdventureWorks2008R2;
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