Interbase - exemplo de while e concatenacao de strings

Top  Previous  Next

// exemplo do while

 

 declare variable i int;

  declare variable m int;

  declare variable mes int;

  declare variable ano int;

  declare variable cod_cliente int;

  declare variable dia_pagto int;

  declare variable parcelas int;

  declare variable valor numeric(10,2);

  declare variable dataParcela date;

  declare variable mes_parcela int;

BEGIN

  select extract(month from current_Date), extract(year from current_Date)

  from rdb$database into :mes, :ano;

  for

     select c.cod_cliente, c.dia_pagto, m.parcelas, m.valor

     from tb_cliente c

     inner join tb_plano_mensalidade m on ( m.cod_plano = c.cod_plano)

     where (c.ativo = 'S'and ((:cliente=c.cod_cliente)or(:cliente=0))

     into :cod_cliente, :dia_pagto, :parcelas, :valor

  do

  begin

    i = 1;

    while (:i <= :parcelas) do

    begin

      if (:mes+i-1 > 12) then

      begin

        mes =1;

        ano = ano +1;

      end

      /*apaga mensalidades nao pagas do plano para gerar novament*/

      delete from tb_mensalidade

            where (cod_cliente=:cod_cliente) and

            (extract(month from data)=:mes + :i -1)and

            (extract(year from data)=:ano)and

            not (valor_baixa > 0);

      /*verificar se existe mensalidade ja paga*/

      select count(cod_cliente) from tb_mensalidade

      where (cod_cliente=:cod_cliente) and

            (extract(month from data)=:mes + :i -1)and

            (extract(year from data)=:ano)

      into :m;

 

      if (not :m > 0) then

      begin

        dataParcela =  cast(cast(:mes + :i -1 as char(2))||'/'||

                          cast(:dia_pagto as char(2))||'/'||

                          cast(:ano as char(4)) as date);

        insert into tb_mensalidade values (:cod_cliente,:dataParcela,:valor,null,0);

      end

      i = i + 1;

    end

  end

  SUSPEND;

END