[firebase-br] procedure em loop

samuel ferreira samuel.peres.ferreira em gmail.com
Ter Set 2 11:21:49 -03 2008


ola

uso o fb 2.1. necessito fazer uma procedure para gerar um relatorio de
producao. tem q sair em ordem de produtos q atendam os clientes q pediram
menos produtos. entao fiz a logica abaixo, criando uma 'tabela temporaria'.
esta entrando em loop, ai tenho dar um 'stop' no fb.

se alguem puder dar uma olhada na logica, eu agradeco


samuel


ALTER PROCEDURE SPRETORNAPRODUCAO (
    COMPUTADOR Varchar(15),
    DATAINICIAL Date,
    DATAFINAL Date )
RETURNS (
    PRODUTO Integer,
    DESCRICAO Varchar(50),
    MARCA Varchar(15),
    QUANTIDADE Numeric(12,0) )
AS
declare wcliente numeric(6);
declare wFaz numeric(1);
declare wQuantidade numeric(15,6);
declare wTransformacao numeric(6);
declare wProduto numeric(6);

.
.
.
.  o loop esta na logica abaixo
.

   wFaz = 1;
   while (wFaz = 1) do
      begin
         select first 1 cliente, count(*) from temporaria
                    where computador = :computador
                    group by CLIENTE
                    order by 2
                    into :wCliente, :wQuantidade;
        if (:wQuantidade is null) THEN
           wQuantidade = 0;
        if (wQuantidade = 0) THEN
           BEGIN
              wFaz = 0;
              break;
           end
        for select t.produto, p.descricao, p.marca, sum(t.quantidade)
                  from temporaria t, produto p
                  where t.cliente = :wCliente AND
                        t.computador = :Computador AND
                        t.produto = p.produto
                  group by t.produto, p.descricao, p.marca
                  into :Produto, :descricao, :marca, :wQuantidade do
            BEGIN
               delete from temporaria
                    where computador = :computador AND
                          produto = :produto;
               suspend;
            end
       end



Mais detalhes sobre a lista de discussão lista