Boa tarde galera estarei publicando hoje aqui um artigo que é sem duvida muito importante para quem pretende trabalhar com regras de negócio do lado do servidor de banco de dados.
A tratativa é simples porém de grande valia, não percamos mais tempo mãos a obra...
Nesse exemplo iremos criar uma stored procedure que irá checar se um determinado item possui saldo em estoque para vendas, observando porém algumas regras na própria procedure.
--Criação da Tabela
Create Table TbEstoque(
id int not null identity(1,1)primary key,
Descricao varchar(255),
Preco float,
Saldo float
)
Go
--Criação da Stored Procedure
Create alter Procedure SpBaixaEstoque
(
@id int,
@QtdVnd float
)
as
Declare @Saldo float
begin
set @Saldo = (select Saldo From TbEstoque where id = @id)
--Verificando o saldo do produto
if (@Saldo <= 0 )
raiserror 50001 'esse item não possui saldo de estoque'
else if(@Saldo < @QtdVnd)
raiserror 50001 'esse item não possui saldo suficiente para realizar essa venda'
else
begin
update TbEstoque
set Saldo = (@Saldo - @QtdVnd)
where Id = @id
end
end;
--insira alguns itens na tabela pra fazero teste
insert into TbEstoque values('Tenis', 120,10)
no aplicativo delphi crie uma tela parecida com a mostrada a seguir:
no evento onClick do Botão insira o seguinte trecho de código:
Try
with SpBaixaEstoque do
begin
Parameters.ParamByName('@id').Value := Qrid.AsInteger;
Parameters.ParamByName('@QtdVnd').Value := StrToFloat(Edit1.Text);
ExecProc;
MessageDlg('Venda Concluída',mtInformation,[mbok], 0);
Qr.Close;
Qr.Open;
end;
Except
on e : EDatabaseError do
begin
ShowMessage(e.Message);
end;
End;
A grande sacada é declarar uma variavel do tipo EDatabaseError na clausula exception, para capturar erros (Exceções) vindas do banco de dados, um grande abraço a todos dúvidas postem.