[firebase-br] Probleminha com Stored Procedure

Marco Aurélio Tomaz marcoaureliotomaz em gmail.com
Qui Set 29 08:50:06 -03 2005


Olá usuários de Firebird.

Tenho uma tabela que toda vez que ela tem um registro inserido ela
executa essa triger:

CREATE TRIGGER VENDA_BI FOR VENDA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GEN_VENDA_ID,1);
  execute procedure box_estoque_saida (NEW.box, NEW.produto,NEW.QTD);
END

Como vocês podem notar existe uma stored procedure, ela atuliza o
estoque de um box, a questão que após inserir um registro, executar a
trigger, rodar a stored procedure, quando visualizo ainda pela
aplicação num relatório ou na tela de estoque, o mesmo não foi
atualizado, mas quando saiu da aplicação e retorno pra ela, pronto, o
sistema já vê os números atualizados...o que está havendo ?

só pra efeito, chamo essa mesma procedure pela aplicação em outro
ponto e ela funciona...será que tem algo haver com a trigger ?

Abaixo coloco a stored procedure :
CREATE PROCEDURE BOX_ESTOQUE_SAIDA (
    BOX INTEGER,
    PRODUTO INTEGER,
    QTD NUMERIC(9,2))
AS
BEGIN
  IF (EXISTS(SELECT BOX FROM BOX_ESTOQUE WHERE (BOX = :BOX) AND 
(PRODUTO = :PRODUTO))) THEN
    UPDATE BOX_ESTOQUE
    SET QTD = QTD - :QTD
    WHERE (BOX = :BOX) AND (PRODUTO = :PRODUTO);
  ELSE
    INSERT INTO BOX_ESTOQUE (
        BOX,
        PRODUTO,
        QTD)
    VALUES (
        :BOX,
        :PRODUTO,
        :QTD);

END

Gostaria de saber se preciso mudar algo no banco ou na aplicação.  uso
ZeosLib + Delphi 7 + Firebird 1.5.

Obrigado pela atenção




Mais detalhes sobre a lista de discussão lista