TRY…CATCH
Usada para tratar erros T-SQL
O TRY…CATCH captura todos os erros de execução com severidade maior que 10 que não encerram a conexão do banco de dados.
Exemplo:
Insert tb_Produto (nm_Produto,id_Fornecedor,fl_Ativo) Select nm_Produto = 'boné', id_Fornecedor = 11, fl_Ativo =1 Msg 547, Level 16, State 0, Line 26 The INSERT statement conflicted with the FOREIGN KEY constraint "fk_Produto_Fornecedor". The conflict occurred in database "GUIADBA", table "dbo.tb_Fornecedor", column 'id_Fornecedor'. The statement has been terminated.
O fornecedor de código 11 não existe e com isso gerou um conflito de FK que é um erro de severidade nível 16.
A sintaxe do TRY/CATCH é a seguinte:
Begin Try --Instrução SQL End try Begin catch --Instrução SQL End catch
Qualquer coisa diferente disso vai gerar erro. A seguir um exemplo simples desse tratamento de erro.
Begin try Declare @msg varchar(50) Begin Set @msg = 'Erro de Inclusão' Insert tb_Produto (nm_Produto,id_Fornecedor,fl_Ativo) Select 'boné', 11,1 End End try begin catch Select @msg, ERROR_MESSAGE () End catch
No bloco catch podemos inserir funções de sistema. No Exemplo acima, eu utilizei ERROR_MESSAGE ()
para identificarmos a mensagem com o erro gerado.
Poderia usar as seguintes funções:
ERROR_MESSAGE ()
ERROR_LINE ()
ERROR_PROCEDURE()
ERROR_SEVERITY()
ERROR_NUMBER()
ERROR_STATE()
Gostou deste artigo? Então você vai gostar do treinamento Guia DBA que vai tornar você um especialista em otimização, clique aqui e adquira o “Curso SQL Server 2014” e receba também “O passo a passo para otimização“