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.

 

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados