Pokud funkce vrátí jeden záznam, pak:
WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;
bude pracovat. Pokud je však funkcí SRF (Set-Returning-Function), musíte použít LATERAL, abyste databázi věděli, že chcete vložit výsledky předchozích tabulek v příkazu JOIN do funkcí později v PŘIPOJIT. To se provádí takto:
WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);
LATERAL způsobí, že PostgreSQL vezme každý řádek z CTE a spustí "my_function" s hodnotami z tohoto řádku, čímž vrátí výsledky této funkce do celkového příkazu SELECT.