[firebase-br] UPDATE

Francisco A Souza francisco em logosinfo.com.br
Qui Ago 17 13:13:40 -03 2006


Eu fiz um sp, para ler o movimento de uma tabela(tipo pedidos), e atualizar 
outra tabela que grava o resumo das vendas do pedido, tipo um giro de 
vendas.
vai o codigo da uma olhada e adapta ao seu sistema:

CREATE PROCEDURE CRIAGIROMES
RETURNS (
    ID_LOJA INTEGER,
    MES SMALLINT,
    ANO SMALLINT,
    CODIGO INTEGER,
    QUANTIDADE NUMERIC (18, 3),
    TOTAL NUMERIC (18, 6))
ASBEGIN
  DELETE FROM TABELA_PRODUTOS_GIRO_MES; //aqui fiz uma limpeza na tabela de 
giros.
  FOR SELECT
      CF_ITENS.id_loja,
      EXTRACT(MONTH FROM CF.emissao) AS MES,
      EXTRACT(YEAR FROM CF.EMISSAO) AS ANO,
      CF_ITENS.CODIGO,
      SUM(CF_ITENS.QUANTIDADE) AS Quantidade,
      SUM(CF_ITENS.PRECO*cf_itens.quantidade) AS TOTAL
    FROM
      CF_ITENS
      LEFT JOIN CF ON (CF_ITENS.ID = CF.ID) AND (CF_ITENS.ID_LOJA = 
CF.ID_LOJA)
      WHERE CODIGO>0 AND CF.status<>'C'
    GROUP BY
      CF_ITENS.id_loja,MES,ANO,CF_ITENS.CODIGO

    INTO
      :ID_LOJA,
      :MES,
      :ANO,
      :CODIGO,
      :QUANTIDADE,
      :TOTAL                           /// aqui fiz o select agrupando po 
produto,mes e ano somando as quantidades
DO
BEGIN
 INSERT INTO TABELA_PRODUTOS_GIRO_MES  /(
    ID_PRODUTO,
    ID_LOJA,
    VENDAS,
    MES,
    ANO,
    TOTAL_VENDAS)
  VALUES (
    :CODIGO,
    :ID_LOJA,
    :QUANTIDADE,
    :MES,
    :ANO,
    :TOTAL); /// aqui fiz inclusao na tabela de giros.
    END
END






Mais detalhes sobre a lista de discussão lista