[firebase-br] ajuda com stored procedure

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Qui Maio 7 08:37:06 -03 2009


bom dia a todos estou com um pequeno problema e gostaria de sua ajuda
tenho a seguinte sp e funciona sem problemas pra um item so mais qdo é mais
de um item fica meio dificil gostaria da ajuda de vc's, ficarei grato se
puderem ajudar

a sintaxe é a seguinte

SET TERM ^ ;

CREATE PROCEDURE UPD_INS_ESTOQUE (
    codprod varchar(18),
    cod_local char(3),
    qtde_disp numeric(10,2))
as
BEGIN
if (EXISTS(SELECT CODPROD FROM ESTOQUE WHERE(CODPROD = :CODPROD)AND
(COD_LOCAL = :COD_LOCAL))) then
UPDATE ESTOQUE
SET
COD_LOCAL = :COD_LOCAL,
QTDE_DISP = QTDE_DISP +:QTDE_DISP
WHERE (CODPROD =:CODPROD);
ELSE
INSERT INTO ESTOQUE(
CODPROD,
COD_LOCAL,
QTDE_DISP)
VALUES
(
:CODPROD,
:COD_LOCAL,
:QTDE_DISP);
END^

SET TERM ; ^


e a chamda nessa procedure é feita assim nela tem um laço no dataset
temporário que antes funcionava bem usando uma senteça sel update, mais com
a sp n ta funcionando

procedure TF_Mov_Estoq.atlz_estoque;
begin
if rbmov.Value = 'E' then
begin

    while not (cds_m_stoq.Eof) do //Cds_m_stoq = clientdataset temporário
    begin
    sp_up_ins.Params[0].AsString := Cds_M_StoqCODPROD.AsString;
    sp_up_ins.params[1].AsString := Dbedit2.Field.AsString;
    sp_up_ins.params[2].AsFMTBCD := cds_M_StoqQTDE.AsBCD;
    sp_up_ins.execproc;
    cds_m_stoq.Next;
    f_dmm.Estoque.Close;
  f_dmm.Estoque.Open;

    end;
se tirar o laço funciona mais so pra um item o que seria melhor nesse caso
colocar uma trigger pra chamar essa sp, não sei poderiam me ajudar



Mais detalhes sobre a lista de discussão lista