quarta-feira, 22 de agosto de 2012

FIrebird - Stored Procedure com While


CREATE OR ALTER PROCEDURE EXECUTA_VALORES
returns (
    NOME_ varchar(50),
    VALOR_ NUMERIC(15,2))
as
declare variable i integer;
declare variable Val NUMERIC(15,2);
declare variable Div NUMERIC(15,2);

begin
   for select NOME, VALOR from TESTE
     into :NOME_, :Val
   do
   begin

   if (:Val >= 4999) then
     begin
       Div =  CAST((:Val/4999) AS integer) + 1;
       i = 1;
       while (i < div) DO
         begin
           VALOR_ = :VAL/DIV;
           i = i+1;
           suspend;
         end

     end
   else
     begin
       VALOR_ = :Val;
     end
   suspend;
   end

end


//Para executar

select * from executa_valores

Nenhum comentário:

Postar um comentário