sábado, 6 de novembro de 2010

Error Handling no SQL Server

Trabalhar com programação em T-SQL ficou ainda melhor com Error Handling, podemos dar direções diferentes dependendo do que está acontencendo em nosso código; podemos trabalhar com testes de ambiente etc com essa "nova maravilha" do SQL Server;

Abaixo está um script completo com minhas anotações sobre Error Handling:



-- Cria uma tabela para teste
CREATE TABLE mytable
( ID INT NOT NULL PRIMARY KEY)

-- Inicia uma transação e não trata o erro
-- repare que somente um registro não será inserido
-- na tabela, pois estamos dando commmit na transação
-- e não tratando erros
BEGIN TRAN
INSERT mytable VALUES (1)
INSERT mytable VALUES (1)
INSERT mytable VALUES (2)
COMMIT TRAN

SELECT * FROM mytable -- Seleciona os registros da tabela
TRUNCATE TABLE mytable -- Deleta todos os dados da tabela

--// -------------------------------

-- Após configurar a função XACT_ABORT para ON
-- o sql passará a fazer rollback de toda a transação dentro
-- do bloco de transação
SET XACT_ABORT ON
GO
BEGIN TRAN
INSERT mytable VALUES (3)
INSERT mytable VALUES (3)
INSERT mytable VALUES (4)
COMMIT TRAN
GO
SET XACT_ABORT OFF
GO

SELECT * FROM mytable -- Seleciona os registros da tabela
TRUNCATE TABLE mytable -- Deleta todos os dados da tabela
--// -------------------------------

-- Com o bloco de tratamento de erros é possível
-- direcionar o fluxo para o rollback da transação em
-- vez de tentar comitar as transações corretas.
-- Isto faz com que todo o conteúdo da transação seja desfeito
BEGIN TRY
BEGIN TRAN
INSERT mytable VALUES(1)
INSERT mytable VALUES(1)
INSERT mytable VALUES(2)
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
PRINT 'A Transação Não Foi Comitada no Banco'
END CATCH

SELECT * FROM mytable -- Seleciona os registros da tabela
TRUNCATE TABLE mytable -- Deleta todos os dados da tabela


(basta copiar e colar no SQL Server para ter um código mais legível)

Abraço.

Nenhum comentário:

Postar um comentário

Pesquisar este blog