[firebase-br] Stored Procedure

Tadeu-Uol numeros.info em uol.com.br
Sex Nov 11 15:48:53 -03 2005


Caro Junior.

Eu uso uma ferramenta o IBOConsole onde crio minhas procedures e no Delphi 
eu uso o IBX e la tem um conponente chamado IBStoredProc onde configuro as 
propriedades Database, Name, StoredProcName onde seleciono a procedure que 
desejo executar e faço a chamada a esta procedure no evento apropriado do 
meu sistema tipo no OnClick de um botão da seguinte forma:

  spAcertaPreco.Close;
  spAcertaPreco.ParamByName('PVENDA').AsString    :=  qrVendasVENDAN.Value;
  spAcertaPreco.ParamByName('PNATOPE').AsString   :=  qrVendasNATOPE.Value;
  spAcertaPreco.ExecProc;

Espero ter ajudado

Atenciosamente,

Tadeu Rodrigues de Oliveira
Números Informática
www.numerosinformatica.com.br
sistemas em numerosinformatica.com.br
numeros.info em uol.com.br

----- Original Message ----- 
From: "Junior" <mwd em onda.com.br>
To: <lista em firebase.com.br>
Sent: Friday, November 11, 2005 2:55 PM
Subject: [firebase-br] Stored Procedure


Olá amigos.

Vou usar o e-mail do nosso amigo sobre SP.

Desenvolvi um sistema com Delphi e FireBird que está rodando numa empresa. 
Quando há necessidade de alterar alguma tabela utilizo 'Alter tabble....' / 
'Create table....' e assim por diante.

No caso a baixo de uma SP eu posso fazer da seguinte forma:

QyAtualiza é minha query p/ atualização das tabelas

QyAtualiza.close;

QyAtualiza.sql.clear;

QyAtualiza.add('CREATE PROCEDURE CALC_CUSTO_PRODUTOS (');
QyAtualiza.add('WPRODUTO_ID INTEGER)');
QyAtualiza.add('RETURNS (');
QyAtualiza.add('WCUSTO NUMERIC(9,2))');
QyAtualiza.add('AS');
QyAtualiza.add('DECLARE VARIABLE WPRODUTO_ID2 INTEGER;');
QyAtualiza.add('DECLARE VARIABLE WCUSTOPARCIAL NUMERIC(9,2);');
QyAtualiza.add('DECLARE VARIABLE WICMS NUMERIC(9,2);');
QyAtualiza.add('DECLARE VARIABLE WMONTADO CHAR(1);');
QyAtualiza.add('DECLARE VARIABLE WFORNECEDOR_ID INTEGER;');
QyAtualiza.add('begin');
QyAtualiza.add('wCusto=0;');
QyAtualiza.add('Select montado, fornecedor_id from produtos where');
QyAtualiza.add('produtos.registro_id=:wproduto_id into :wmontado, 
:wfornecedor_id;');
QyAtualiza.add('-- Select fornecedor_id from produtos where');
QyAtualiza.add('produtos.registro_id=:wproduto_id into :wfornecedor_id;');
QyAtualiza.add('if (wMontado='F') then /* Se **** NÃO **** FOR UM PRODUTO 
MONTADO */');
QyAtualiza.add('begin');
QyAtualiza.add('select icms from agenda where');
QyAtualiza.add('agenda.registro_id=:wFornecedor_id into :wICMS;');
QyAtualiza.add('select Coalesce((valor_compra *');
QyAtualiza.add('(1-(:wICMS/100)))+(valor_Compra*(IPI/100)),0) from 
produtos');
QyAtualiza.add('where registro_id=:wproduto_id into wcusto;');
QyAtualiza.add('end');
QyAtualiza.add('if (wMontado='T') then /* Se **** FOR **** UM PRODUTO 
MONTADO */');
QyAtualiza.add('begin');
QyAtualiza.add('for Select produto_id, Coalesce((qtde * (Select wCusto');
QyAtualiza.add('from Calc_Custo_Produtos(romaneios.produto_id))),0)');
QyAtualiza.add('from romaneios where montagem_id=:wproduto_id');
QyAtualiza.add('into :wproduto_id2, :wcustoparcial');
QyAtualiza.add('do');
QyAtualiza.add('wcusto=:wcusto+:wcustoparcial;');
QyAtualiza.add('end');
QyAtualiza.add('suspend;');
QyAtualiza.add('end');

QyAtualiza.ExecSQL;
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista