Quando le cose funzionano in blocchi anonimi ma non nelle procedure memorizzate, di solito è a causa dei diritti del definitore rispetto ai diritti dell'invocatore. I blocchi anonimi e le procedure dei diritti dell'invocatore possono utilizzare i privilegi concessi tramite ruoli, ma le procedure dei diritti del definitore non possono.
Prova a cambiare return varchar2 is
per return varchar2 authid current_user is
.