Gerando Exceptions no SQL SERVER e Recuperando no aplicativo
esse artigo apresenta uma forma prática de como se trabalhar com regras de negócios do lado do servidor de banco de dados.
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.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo