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
Deixe uma resposta