Hvis funktionen returnerer en enkelt post, så:
WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;
vil arbejde. Men hvis funktionen er en SRF (Set-Returning-Function), så skal du bruge LATERAL for at lade databasen vide, at du vil føre resultaterne af de foregående tabeller i JOIN-sætningen til funktionerne senere i TILSLUTTE. Dette opnås sådan:
WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);
LATERAL vil få PostgreSQL til at tage hver række fra CTE og køre "my_function" med værdierne fra den række, hvilket returnerer resultaterne af den funktion til den overordnede SELECT-sætning.