Cómo mapa de consultas de postgres función.

WITH RECURSIVE source (counter, product) AS (
SELECT
1, 1
UNION ALL
SELECT
counter + 1, product * (counter + 1)
FROM source
WHERE
counter < 10
)
SELECT counter, product FROM source;

Soy nuevo en postgres. Quiero lograr la misma funcionalidad que el uso de PL/pgsql función.

1 Comentario

  1. 5

    Función recursiva:

    create or replace function recursive_function (ct int, pr int)
    returns table (counter int, product int)
    language plpgsql
    as $$
    begin
        return query select ct, pr;
        if ct < 10 then
            return query select * from recursive_function(ct+ 1, pr * (ct+ 1));
        end if;
    end $$;
    
    select * from recursive_function (1, 1);

    Función de bucle:

    create or replace function loop_function ()
    returns table (counter int, product int)
    language plpgsql
    as $$
    declare
        ct int;
        pr int = 1;
    begin
        for ct in 1..10 loop
            pr = ct* pr;
            return query select ct, pr;
        end loop;
    end $$;
    
    select * from loop_function ();
    • Es el uso de la recursivo estilo probabilidades de causar desbordamientos de pila en caso de atravesar una profunda estructura anidada?
    • Postgres tiene un parámetro de configuración max_stack_depth, que especifica la profundidad máxima del servidor de la pila de ejecución. Su valor predeterminado (2MB) limita severamente las funciones recursivas. Una simple prueba de función recursiva con dos argumentos enteros alcanza el límite de alrededor de 1000 nivel. Leer más en documentación.

Dejar respuesta

Please enter your comment!
Please enter your name here