ERROR_PROCEDURE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Esta função retorna o nome do procedimento armazenado ou gatilho onde ocorre um erro, se esse erro fez com que o CATCH bloco de uma TRY...CATCH construção fosse executado.

  • SQL Server 2017 (14.x) e versões posteriores retornam schema_name.stored_procedure_name
  • Retorno do SQL Server 2016 (13.x) e do Banco de Dados SQL do Azure stored_procedure_name

Transact-SQL convenções de sintaxe

Sintaxe

ERROR_PROCEDURE ( )

Tipos de devolução

Nvarchar(128)

Valor de retorno

Quando chamado em um CATCH bloco, ERROR_PROCEDURE retorna o nome do procedimento armazenado ou gatilho no qual o erro se originou.

ERROR_PROCEDURE retorna NULL se o erro não ocorreu em um procedimento armazenado ou gatilho.

ERROR_PROCEDURE retorna NULL quando chamado fora do escopo de um CATCH bloco.

Observações

ERROR_PROCEDURE suporta chamadas em qualquer lugar dentro do escopo de um CATCH bloco.

ERROR_PROCEDURE Retorna o nome do procedimento armazenado ou gatilho onde ocorre um erro, independentemente de quantas vezes ele é executado ou onde é executado, dentro do escopo do CATCH bloco. Esse resultado contrasta com uma função como @@ERROR, que retorna apenas um número de erro na instrução imediatamente seguinte àquela que causa um erro.

Exemplos: Azure Synapse Analytics

Um. Utilizar ERROR_PROCEDURE num bloco CATCH

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero. ERROR_PROCEDURE Retorna o nome do procedimento armazenado onde o erro ocorreu.

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

Aqui está o conjunto de resultados.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Use ERROR_PROCEDURE em um bloco CATCH com outras ferramentas de tratamento de erros

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero. Junto com o nome do procedimento armazenado onde o erro ocorreu, o procedimento armazenado retorna informações sobre o erro.

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

Aqui está o conjunto de resultados.

-----------

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