Esta é uma procedure de exemplo, onde um flag (i, u , d) determina a operaçãoque será executada.
CREATE PROCEDURE sp_malotes
@codmalote int,
@numerolacre varchar(15),
@origem varchar(50),
@destino varchar(50),
@operacao nchar(1),
@novocodigo int output,
@retorno nvarchar(50) output
AS
if lower(@operacao) = 'i' -- inserir um registro
begin
if exists(select numerolacre from tb_malote where numerolacre = @numerolacre)
begin
select @retorno = 'Numero lacre JÁ EXISTENTE.'
return (@retorno)
end
else
begin
select @retorno = ''
begin transaction
insert into tb_malote
(numerolacre, origem, destino )
values
(@numerolacre, @origem, @destino )
set @novocodigo = @@identity
--variavel global do SQL SERVER que retorna o ultimo valor de um campo(identity)
end
end
else
if lower(@operacao) = 'u' -- alterar um registro
begin
select @retorno = ''
begin transaction
update tb_malote set
numerolacre = @numerolacre,
origem = @origem,
destino = @destino
where codmalote = @codmalote
end
else
if lower(@operacao) = 'd' -- excluir um registro
begin
select @retorno = ''
begin transaction
delete from tb_malote
where codmalote = @codmalote
end
if @@error <> 0
begin
rollback transaction
return(1)
end
else
begin
commit transaction
return(0)
end