[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