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 |