[firebase-br] Loop em Procedures

Sidnei Ricardo de Souza srsouza em pop.com.br
Qua Jul 27 09:58:26 -03 2005


   Marcio, retire o suspend que vc colocou logo no início do for select, quando
você o utiliza ele em uma procedure executável, ou seja, não vai ser um for
select de retorno, o suspend pula para o end final da procedure, nesse caso vc
só precisa colocar o suspend no fim da procedure, mas não é muito recomendado,
ai é preferível você colocar o Exit que ai sim vc efetivamente está encerrando a
stored procedure, não que o suspend não vai fazer isso, mas você pode ter um
problema de travamento não muito comum, mas pode acontecer.

   Sidnei Ricardo

>
>
> 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
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>





Mais detalhes sobre a lista de discussão lista