SQL-Cursor können leider nicht rekursiv verwendet werden, da der Name ja nur 1 Mal existiert.

Für deine Funktion würde ich da eher eine "Rekursive CTE" verwenden, damit kannst du die Stückliste per SQL in einem Cursor komplett lesen.

Beispiele findest du hier im Forum und in der SQL-Reference.