ERROR_LINE (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Essa função retorna o número de linha da ocorrência de um erro que fez com que o bloco CATCH de um constructo TRY...CATCH fosse executado.
Convenções de sintaxe de Transact-SQL
Sintaxe
ERROR_LINE ( )
Tipo de retorno
int
Valor retornado
Quando chamado em um bloco CATCH, ERROR_LINE
retorna
- o número de linha em que o erro ocorreu
- o número de linha em uma rotina se o erro ocorreu dentro de um procedimento armazenado ou gatilho
- NULL, se chamado fora do escopo de um bloco CATCH.
Comentários
Uma chamada a ERROR_LINE
pode ocorrer em qualquer lugar dentro do escopo de um bloco CATCH.
ERROR_LINE
retorna o número de linha em que o erro ocorreu. Isso acontece independentemente da localização da chamada ERROR_LINE
dentro do escopo do bloco CATCH e independentemente do número de chamadas para ERROR_LINE
. Isso contrasta com funções, como @@ERROR. @@ERROR retorna um número de erro na instrução imediatamente após aquela que causa um erro ou na primeira instrução de um bloco CATCH.
Em blocos CATCH aninhados, ERROR_LINE
retorna o número de linha do erro específico ao escopo do bloco CATCH no qual ele é referenciado. Por exemplo, o bloco CATCH de um constructo TRY...CATCH poderia ter um constructo TRY...CATCH aninhado. Dentro do bloco CATCH aninhado, ERROR_LINE
retorna o número de linha do erro que invocou o bloco CATCH aninhado. Se ERROR_LINE
for executado em um bloco CATCH externo, ele retornará o número de linha do erro que invocou aquele bloco CATCH específico.
Exemplos
a. Usando ERROR_LINE em um bloco CATCH
Este exemplo de código a seguir mostra uma instrução SELECT
que gera um erro de divisão por zero. ERROR_LINE
retorna o número de linha em que 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. Usando ERROR_LINE em um bloco CATCH com um procedimento armazenado
Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero. ERROR_LINE
retorna o número de linha em que 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. Usando ERROR_LINE em um bloco CATCH com outras ferramentas de tratamento de erros
Este exemplo de código a seguir mostra uma instrução SELECT
que gera um erro de divisão por zero. ERROR_LINE
retorna o número de linha em que ocorreu o erro e informações sobre o erro propriamente dito.
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
Consulte Também
TRY...CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)