Introduzido no SQL Server 2005 a cláusula OUTPUT pode ser usada em conjunto com os comandos UPDATE, DELETE ou INSERT com facilidade. Isso é feito através do comando OUTPUT que pode acessar as tabelas temporárias, que até o SQL 2000 estavam disponíveis apenas em triggers.
Por este motivo, esta implementação pode ser particularmente útil para substituir triggers que tem como objetivo logs e auditorias. Tenho encontrado muita utilidade para estes comandos em suportes ou deploys de aplicações, seja para determinar se um certo script está realizando assertivamente a sua finalidade.
Veja o exemplo abaixo:
--criando uma tabela de teste
create table teste_output(
codigo int identity(1,1),
nome varchar(100),
origem varchar(100)
default 'Aplicação'
)
go
--criando uma temp, poderia ser uma física
create table #tmp_teste(
codigo int,
nome varchar(100),
origem varchar(100)
)
go
--inserindo os dados. veja o uso da cláusula output referenciando a tabela virtual inserted
insert into teste_output(nome) output inserted.codigo,inserted.nome,'Output inserted - insert' into #tmp_teste(codigo,nome,origem) values ('Rodrigo')
insert into teste_output(nome) output inserted.codigo,inserted.nome,'Output inserted - insert' into #tmp_teste(codigo,nome,origem) values ('Daniel')
insert into teste_output(nome) output inserted.codigo,inserted.nome,'Output inserted - insert' into #tmp_teste(codigo,nome,origem) values ('Evelise')
--atualizando
update teste_output set origem='Update'
output inserted.codigo,inserted.nome,'Output inserted - update' into #tmp_teste(codigo,nome,origem)
--deletando
delete from teste_output
output deleted.codigo,deleted.nome,'Output deleted - delete' into #tmp_teste(codigo,nome,origem)
--mostrando os resultados
select * from #tmp_teste
--excluindo os objetos
drop table #tmp_teste
drop table teste_output
Nenhum comentário:
Postar um comentário
Leave your comment here!