[firebase-br] Loop em Procedures

Marcio O. Nascimento (Forzza) mnascimento em forzza.com.br
Qua Jul 27 08:56:57 -03 2005



Pessol, bom dia a todos.

Estou com problemas na execucao de uma Procedure, onde preciso fazer um Loop no resultado do select, todavia a procedure retorna erro e nao executa as devidas insercoes.

Subscrevo a Procedure para que os senhores na medida de suas possibilidades possa analisar, Obrigado.

-------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE PROC_ABERTURA_CAIXA (
    DATA_ATUAL DATE)
AS
DECLARE VARIABLE DATA_CX DATE;
DECLARE VARIABLE SALDO_CX NUMERIC(18,2);
DECLARE VARIABLE PRODUTO SMALLINT;
begin
  select first 1 a.data from mvto_caixa a
  where a.data = :data_atual
  into :DATA_CX;

  if (data_cx >= data_atual ) then
  begin
    Exception Erro_Abertura_Caixa;
    suspend;
  end

  select max(a.data) from mvto_caixa a
  where a.data < :data_atual
  into :data_cx;

  for select cd_produto from produtos
  into :produto
  do
  begin
    suspend;
    select b.data, b.saldo_fin_enc from mvto_caixa b
    where b.data = :data_cx
    and b.cd_produto = :produto
    into  :data_cx, :saldo_cx;

    INSERT INTO MVTO_CAIXA
    (data, cd_produto, saldo_ini_enc, saldo_fin_enc, saldo_ini_fut, saldo_fin_fut)
    VALUES
    (:data_cx, :produto, :saldo_cx, :saldo_cx,0,0);
  end
  suspend;
end


Mais detalhes sobre a lista de discussão lista