PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Incorporando um LOOP em um SQL


O problema é chamar a função com argumentos, mas não especificar nenhum ao criar a função. Então você precisa de algo como (não testado):
CREATE FUNCTION "UpdatePMPM"(nbr_mem_months integer, effectivdate date, some_arg varchar) RETURNS void
    LANGUAGE plpgsql
AS
$$
DECLARE
    ym varchar := to_char(effectivedate,'YYYYMM');
BEGIN
        FOR r IN  1..nbr_mem_months LOOP
            
            UPDATE elan.pmpm set mbrmonths = mbrmonths+1 where yyyyymm = ym;
            effectivedate = effectivedate + interval '1 month';
            ym=to_char(effectivedate,'YYYYMM');
        END LOOP;
    RETURN;
END
$$;

A partir do erro, não está claro qual deve ser o terceiro argumento, então isso será esclarecido por você.