ERROR_SEVERITY (Transact-SQL)
Retorna a severidade do erro que fez o bloco CATCH de uma construção TRY…CATCH ser executado.
Convenções da sintaxe Transact-SQL
Sintaxe
ERROR_SEVERITY ( )
Tipos de retorno
int
Valor de retorno
Quando chamado em um bloco CATCH, retorna a severidade da mensagem de erro que fez esse bloco ser executado.
Retorna NULL se for chamado fora do escopo de um bloco CATCH.
Comentários
ERROR_SEVERITY pode ser chamado em qualquer lugar dentro do escopo de um bloco CATCH.
ERROR_SEVERITY retorna a severidade de erro, independentemente do número de vezes que é executado ou se é executado dentro do escopo do bloco CATCH. É diferente de funções como @@ERROR, que retornam apenas o número de erro na instrução imediatamente posterior àquela que causa um erro, ou na primeira instrução de um bloco CATCH.
Em blocos CATCH aninhados, ERROR_SEVERITY retorna a severidade de erro específica do escopo do bloco CATCH no qual é referenciado. Por exemplo, o bloco CATCH de uma construção TRY...CATCH externa poderia ter uma construção TRY...CATCH aninhada. Dentro do bloco CATCH aninhado, ERROR_SEVERITY retorna a severidade de erro que invocou o bloco CATCH aninhado. Se ERROR_SEVERITY for executado em um bloco CATCH externo, retornará a severidade de erro que invocou esse bloco CATCH.
Exemplos
A.Usando ERROR_SEVERIRTY em um bloco CATCH
O exemplo a seguir mostra uma instrução SELECT que gera um erro de divisão por zero. A severidade do erro é retornada.
USE AdventureWorks2012;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_SEVERITY() AS ErrorSeverity;
END CATCH;
GO
B.Usando ERROR_SEVERITY em um bloco CATCH com outras ferramentas de tratamento de erros
O exemplo a seguir mostra uma instrução SELECT que gera um erro de divisão por zero. Junto com a severidade, são retornadas as informações relacionadas ao erro.
USE AdventureWorks2012;
GO
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