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
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Esta função devolve o número de linha de ocorrência de um erro que causou o bloco CATCH de um TRY... CATCH para executar.
Transact-SQL convenções de sintaxe
Sintaxe
ERROR_LINE ( )
Tipo de Retorno
int
Valor de retorno
Quando chamado num bloco CATCH, ERROR_LINE retorna
- o número da linha onde ocorreu o erro
- o número da linha numa rotina, se o erro ocorreu dentro de um procedimento armazenado ou disparador
- NULL, se chamado fora do âmbito de um bloco CATCH.
Observações
Uma chamada para ERROR_LINE pode acontecer em qualquer lugar dentro do âmbito de um bloco CATCH.
ERROR_LINE devolve o número da linha em que o erro ocorreu. Isto acontece independentemente da localização da ERROR_LINE chamada dentro do âmbito do bloco CATCH, e independentemente do número de chamadas para ERROR_LINE. Isto contrasta com funções, como @@ERROR. @@ERROR devolve um número de erro na instrução imediatamente após a que causa o erro, ou na primeira instrução de um bloco CATCH.
Nos blocos CATCH aninhados, devolve ERROR_LINE o número da linha de erro específico ao âmbito do bloco CATCH em que está referenciado. Por exemplo, o bloco CATCH de um TRY... O construto CATCH poderia conter um TRY... aninhado... Construção CATCH. Dentro do bloco CATCH aninhado, ERROR_LINE devolve o número da linha do erro que invocou o bloco CATCH aninhado. Se ERROR_LINE for executado no bloco CATCH externo, devolve o número de linha do erro que invocou esse bloco CATCH específico.
Examples
A. Usar ERROR_LINE num bloco CATCH
Este exemplo de código mostra uma SELECT instrução que gera um erro de divisão por zero.
ERROR_LINE devolve o número da linha onde ocorreu o erro.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
B. Usar ERROR_LINE num bloco CATCH com um procedimento armazenado
Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero.
ERROR_LINE devolve o número da linha onde 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_LINE() AS ErrorLine;
END CATCH;
GO
C. Usar ERROR_LINE num bloco CATCH com outras ferramentas de tratamento de erros
Este exemplo de código mostra uma SELECT instrução que gera um erro de divisão por zero.
ERROR_LINE devolve o número da linha onde ocorreu o erro e informações relativas ao próprio erro.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Ver também
TENTE... CAPTURAR (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
MENSAGEM_DE_ERRO (Transact-SQL)
PROCEDIMENTO_ERRO (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)