Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base 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 and Analytics Platform System (PDW)
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)