[firebase-br] to precisando muito de uma ajuda com uma trigger

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Ter Jun 1 07:22:46 -03 2010


a sintaxe é a seguinte

CREATE OR ALTER TRIGGER TRG_STATUS_OS FOR D_SERVICO_OS
ACTIVE BEFORE UPDATE POSITION 0
as
declare variable v_status char(1);
declare variable codprod varchar(18);
declare variable qtde numeric(10,2);
declare variable local char(3);
declare variable emp integer;
begin
codprod = new.codprod;
qtde = new.qtde;
local = new.cod_local;
emp = new.cod_emp;

select STATUS from c_ordemservico
where codigo = new.cod_os
into :v_status;

select d.codprod, d.qtde from d_servico_os d
where d.cod_os = new.cod_os
into :codprod,:qtde;

if (:v_status = 'A')then
    update estoque e set
    e.qtde_reserv = e.qtde_reserv + :qtde,
    e.saldo = e.qtde_disp - e.qtde_reserv
    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
:emp;

if (:v_status = 'F')then
    update estoque e set
    e.qtde_reserv = e.qtde_reserv - :qtde,
    e.saldo = e.qtde_disp - e.qtde_reserv
    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
:emp;

if (:v_status = 'C')then
    update estoque e set
    e.qtde_reserv = e.qtde_reserv - :qtde,
    e.saldo = e.qtde_disp - e.qtde_reserv
    where e.codprod = :codprod and e.cod_local = :local and e.cod_emp =
:emp;

    end

na realidade acho que o erro é que nem sempre mexo nos itens na realidade o
que deve lterar a quantidade reservada é esse v_status que fica na tabela
c_ordem serviço se algume puder me ajudar a refazer essa trigger ficarei
grato



Mais detalhes sobre a lista de discussão lista