Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
PDW (Analytics Platform System)
Ponto de extremidade de análise do SQL
Warehouse no Microsoft Fabric
Essa função retorna o nome do procedimento armazenado ou gatilho em que ocorre um erro, se esse erro causou a CATCH
execução do bloco de um TRY...CATCH
constructo.
- O 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
Convenções de sintaxe de Transact-SQL
Sintaxe
ERROR_PROCEDURE ( )
Tipos de retorno
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
retornará 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.
Comentários
ERROR_PROCEDURE
dá suporte a chamadas em qualquer lugar dentro do escopo de um CATCH
bloco.
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
. Esse resultado contrasta com uma função como @@ERROR
, que retorna apenas um número de erro na instrução imediatamente após a que causa um erro.
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
a. Usar ERROR_PROCEDURE em um 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 no qual ocorreu 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_PROCEDURE() AS ErrorProcedure;
END CATCH;
GO
Veja a seguir o conjunto de resultados.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Usar 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 em que ocorreu o erro, 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
Veja a seguir 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)