quarta-feira, 4 de março de 2015

Tratamento Erros TRY/CATCH - SQL SERVER

As versões 2005 e 2008 do SQL Server permitem implementar o tratamento de erros através do bloco TRY-CATCH, de maneira semelhante às linguagens de programação convecionais. 

Este bloco é formado por dois sub-blocos:


TRY - contém os comandos necessários para executar a tarefa desejada
CATCH - contém os comandos para tratamento de possíveis erros ocorridos no bloco TRY

Quando um erro ocorre no dentro do bloco TRY a execução é desviada para o bloco CATCH, o que permite continuar a execução do script ou interrompê-lo, de acordo com as necessidades do usuário e gravidade do erro gerado.

-- Criando tabela para teste
CREATE TABLE #teste (id int)

-- Adicionando restrição à tabela.
-- Somente IDs menores do que 10 serão aceitos
ALTER TABLE #teste ADD CONSTRAINT chkID CHECK (id < 10)

-- Executando a tarefa em transação
BEGIN TRANSACTION

BEGIN TRY
      
    INSERT INTO #teste VALUES (5)
    INSERT INTO #teste VALUES (2)
    INSERT INTO #teste VALUES (13)  -- Inserção de ID inválido

    COMMIT TRANSACTION -- Efetivando alterações na base

END TRY
BEGIN CATCH
  
    PRINT 'Erro ao executar script  ' + ERROR_MESSAGE()
    ROLLBACK TRANSACTION -- Desfazendo as alterações na base
        
END CATCH

O SQL Server permite recuperar as informações do erro lançado no bloco TRY, através de algumas funções do sistema:


ERROR_NUMBER() -Retorna o número do erro ERROR_MESSAGE() - Exibe a mensagem do erro ERROR_SEVERITY() - Retorna o grau de severidade do erro ERROR_LINE()  - Retorna a linha em que o erro ocorreu

Nenhum comentário:

Postar um comentário