PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Incorporer une BOUCLE dans un SQL

Le problème est d'appeler la fonction avec des arguments mais de ne pas en spécifier lors de la création de la fonction. Donc, vous avez besoin de quelque chose comme (non testé):

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
$$;

D'après l'erreur, il n'est pas clair ce que le troisième argument est censé être, ce sera donc une clarification de votre part.