Tratamento de exceção no Sql Server 2008

Olá Pessoal, neste artigo vamos falar sobre tratamentos de exceções no SQL Server, utilizando a condição Try…Catch.

Se você já criou algum tratamento de exceção por exemplo no C# não terá dificuldade. Mas para deixar bem claro caso esteja começando, a estrutura é divida no bloco TRY(onde estará o código principal a ser processado) e CATCH(código que será executado caso algo de errado no processo dentro do bloco TRY).

Segue abaixo alguns exemplos:

Para exemplificar vou simular um erro de um insert em uma tabela.

Execute o código abaixo para criar a tabela, ou se preferir utilize alguma que já esteja criada em seu banco de dados.

create table TesteTryCatch(id int, Texto varchar(5))

Eai, vamos fazer o teste? Perceba que coloquei o campo varchar com limite de 5 caracteres e iremos executar um insert com mais de 5 caracteres para que possa ocorrer a exceção.

BEGIN TRY
    INSERT INTO TesteTryCatch(id, Texto)values(1, 'Testes')
    PRINT 'SUCESSO'
END TRY
BEGIN CATCH
    PRINT 'ERRO'
END CATCH

Neste exemplo ele apresenta “SUCESSO” caso de tudo certo e caso ocorra alguma exceção, é apresentado a mensagem “ERRO”.

Mas podemos também obter informações mais relevantes do que apenas uma mensagem “ERRO”. Você pode utilizar no bloco CATCH algumas funções para retornar dados sobre o erro que ocorreu, podendo ser apresentado uma informação mais concisa do que ocasionou o erro.

Segue a lista de algumas destas funções.








Segue abaixo o mesmo exemplo que utilizamos acima, só que agora implementado com estas funções.

BEGIN TRY
    INSERT INTO TesteTryCatch(id, Texto)values(1, 'Testes')
END TRY
BEGIN CATCH
    SELECT
    ERROR_LINE() AS ErrorLine
    ,ERROR_SEVERITY() AS ErrorSeverity
    ,ERROR_NUMBER() AS ErrorNumber        
    ,ERROR_STATE() AS ErrorState        
    ,ERROR_MESSAGE() AS ErrorMessage
END CATCH

Vejam abaixo exemplo em execução.




















Vale lembrar que estas funções que retornam detalhes dos erros devem ser implementadas dentro do bloco CATCH, caso contrário os campos retornarão todos como NULL.

É isso ai! Bons Estudos!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s