Die Table-Funktion benötigt als weiteren Parameter den Key, den es dann ebenso auch wieder als Ergebnisfeld zurückgibt.

Das Hauptproblem könnte sein, dass eine Jointabelle nur 1x aufgerufen wird und dann alle Sätze mt dem Ergebnis verknüpft werden.
Alternativ könnte es mit einer "Lateral Table (select from TableFunction(P1, ....Pn)) on ..." funktionieren, da diese tatsächlich je Zeile aufgerufen wird.