Neben dem Problem, einen Cursor zurückzugeben.
Wenn das Programm nicht neu gewandelt wird, stirbt der Fetch da zu viele (oder zu wenige) Felder verfügbar sind. Der Fetch ist da statisch.

Vergiss den Ansatz SQL's in Prozeduren auszulagern.
Denke lieber darüber nach, "Geschäftslogik" in Prozeduren/Funktionen zu packen.
Du gewinnst nichts, wenn du die Aufrufe von SQL's wie die alten RLA-Zugriffe erzwingst.
Im Gegenteil, du verlierst nur (s.o. Performance)!