Tratamento de erros no SQL

Uma grande dúvida  é sobre a possibilidade de fazer o tratamento de erro no SQL essa necessidade é principalmente encontrada quando trabalhamos com procedures, functions ou  triggers tornando demorado a localização do erro e em muitos casos evitando debugar a rotina toda.

Pensando nisso desde o SQL 2005 temos disponível o tratamento de erro usando o Try … Cath abaixo vou dar um exemplo da sua utilização.

Mão na massa:

Primeiro vamos criar a procedure para facilitar o tratamento de erro           

-- Verifica a existencia da procedure
IF OBJECT_ID ('usp_GetErrorInfo', 'P') IS NOT NULL
    DROP PROCEDURE usp_GetErrorInfo;
GO 
-- Cria procedure com informações de retorno dos erros
CREATE PROCEDURE usp_GetErrorInfo
AS
    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;

Agora vamos testar nosso tratamento de erro:

BEGIN TRY
    -- Erro Generico de divisão por zero
    SELECT 1/0;
END TRY
BEGIN CATCH
    -- executa a procedure de tratamento de erro
    EXECUTE usp_GetErrorInfo;
END CATCH;
GO

Entendendo melhor o que estamos recebendo de retorno dos erros: 

ERROR_NUMBER ():
Retorna o número do erro.
ERROR_MESSAGE ():
Retorna o texto completo da mensagem de erro. O texto inclui os valores fornecidos para qualquer parâmetro substituível, como extensões, nomes de objetos ou horas.
ERROR_SEVERITY ():
Retorna a severidade de erro.
ERROR_STATE():
Retorna o número do estado do erro.
ERROR_LINE ():
Retorna o número de linha dentro da rotina que causou o erro.
ERROR_PROCEDURE():
Retorna o nome do procedimento armazenado ou do gatilho no qual ocorreu o erro.

Saiba no MSDN : http://msdn.microsoft.com/pt-br/library/ms179296.aspx



Categorias:Programação

Tags:, , , , , , , , , , , ,

Deixe uma resposta

%d blogueiros gostam disto: