ERROR_PROCEDURE (Transact-SQL)ERROR_PROCEDURE (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Esta função retorna o nome do procedimento armazenado ou gatilho no qual ocorreu um erro, caso esse erro tenha causado a execução do bloco CATCH de um constructo TRY...CATCH.This function returns the name of the stored procedure or trigger where an error occurs, if that error caused the CATCH block of a TRY...CATCH construct to execute.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

ERROR_PROCEDURE ( )  

Tipos de retornoReturn Types

nvarchar(128)nvarchar(128)

Valor retornadoReturn Value

Quando chamado em um bloco CATCH, ERROR_PROCEDURE retorna o nome do procedimento armazenado ou gatilho no qual o erro se originou.When called in a CATCH block, ERROR_PROCEDURE returns the name of the stored procedure or trigger in which the error originated.

ERROR_PROCEDURE retorna NULL se o erro não ocorreu dentro de um procedimento armazenado ou gatilho.ERROR_PROCEDURE returns NULL if the error did not occur within a stored procedure or trigger.

ERROR_PROCEDURE retorna NULL quando chamado fora do escopo de um bloco CATCH.ERROR_PROCEDURE returns NULL when called outside the scope of a CATCH block.

RemarksRemarks

ERROR_PROCEDURE dá suporte a chamadas em qualquer lugar dentro do escopo de um bloco CATCH.ERROR_PROCEDURE supports calls anywhere within the scope of a CATCH block.

ERROR_PROCEDURE retorna o nome do procedimento armazenado ou gatilho em que ocorre um erro, independentemente de quantas vezes ele é executado ou do local em que ele é executado dentro do escopo do bloco CATCH.ERROR_PROCEDURE returns the name of the stored procedure or trigger where an error occurs, regardless of how many times it runs, or where it runs, within the scope of the CATCH block. É diferente de uma função como @@ERROR, que retorna apenas um número de erro na instrução imediatamente após àquela que causa um erro.This contrasts with a function like @@ERROR, which only returns an error number in the statement immediately following the one that causes an error.

Exemplos: Azure SQL Data WarehouseAzure SQL Data Warehouse e Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

A.A. Usando ERROR_PROCEDURE em um bloco CATCHUsing ERROR_PROCEDURE in a CATCH block

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero.This example shows a stored procedure that generates a divide-by-zero error. ERROR_PROCEDURE retorna o nome do procedimento armazenado no qual ocorreu o erro.ERROR_PROCEDURE returns the name of the stored procedure where the error occurred.

-- 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  

-----------

(0 row(s) affected)

ErrorProcedure
--------------------
usp_ExampleProc

(1 row(s) affected)

B.B. Usando ERROR_PROCEDURE em um bloco CATCH com outras ferramentas de tratamento de errosUsing ERROR_PROCEDURE in a CATCH block with other error-handling tools

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero.This example shows a stored procedure that generates a divide-by-zero error. Junto com o nome do procedimento armazenado em que ocorreu o erro, o procedimento armazenado retorna informações sobre o erro.Along with the name of the stored procedure where the error occurred, the stored procedure returns information about the error.

  
-- 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  

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure   ErrorMessage                       ErrorLine
----------- ------------- ----------- ---------------- ---------------------------------- -----------
8134        16            1           usp_ExampleProc  Divide by zero error encountered.  6

(1 row(s) affected)

Consulte TambémSee Also

sys.messages (Transact-SQL) sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL) TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL) ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL) ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL) ERROR_NUMBER (Transact-SQL)
ERROR_SEVERITY (Transact-SQL) ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL) ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL) RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)@@ERROR (Transact-SQL)