[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